Russian Qt Forum

Программирование => С/C++ => Тема начата: Nidxogg от Май 31, 2014, 21:13



Название: Освобождение памяти
Отправлено: Nidxogg от Май 31, 2014, 21:13
Добрый день, не дает покоя одна проблема
Код:
MyStruct{
int a;
float b;
}

char * array= new char [sizeof(MyStruct)];
MyStruct * pArray  = (MyStruct*)array;

Какой из вариантов правильно освобождает память? Или оба верны
delete pArray или delete [] array






Название: Re: Освобождение памяти
Отправлено: kambala от Май 31, 2014, 22:52
второй точно, ведь память выделена оператором new char []. за первый не уверен.


Название: Re: Освобождение памяти
Отправлено: Igors от Июнь 01, 2014, 08:55
Оба освободят, второй вызовет деструктор для каждого эл-та, который в данном случае ничего не делает. И зачем было приводить?
Код
C++ (Qt)
MyStruct * pArray  = new MyStruct;
..
delete pArray;


Название: Re: Освобождение памяти
Отправлено: Nidxogg от Июнь 01, 2014, 10:03
Цитировать
И зачем было приводить?
Столкнулся с чужим кодом, где через memcpy копируют содержимое структуры в массив char
Потом приводят указатель и передают по сигналу в соответствующий слот.
Память очищают по разному