У меня есть struct
определение следующим образом:
typedef struct {
UINT idLength;
UINT * ids;
} AsnObjectIdentifier;
У меня есть функция, у которой есть переменная, выделенная в стеке вышеупомянутой структуры, и я передаю эту переменную как ссылку на какую-то другую функцию для заполнения значенийв нем.
void someFunc() {
//code
AsnObjectIdentifier temp; //this is a stack allocated variable
someOtherFunc(temp);
}
В функции, которая заполняет вышеприведенную переменную стека, я создаю массив с выделенной кучей UINT
и присваиваю его ids
.
void someOtherFunc(AsnObjectIdentifier& oidVar) {
//code
UINT* arr = new UINT[someSize]; //this is a heap allocated variable
oidVar.ids = arr;
//some other code
}
КогдаЯ возвращаюсь к вызывающей функции. У меня есть переменная стека, которая внутри содержит переменную, выделенную для кучи.
Я что-то не так делаю?Я играю с двумя мирами разных воспоминаний?Может ли это привести к проблемам?
Также, если в someFunc()
я создаю новую переменную AsnObjectIdentifier
и выделяю для нее память, используя malloc
, могу ли я присвоить массив UINT
из выделенной переменной стекаэтой новой куче выделена AsnObjectIdentifier
переменная?Будут ли с этим проблемы?