Russian Qt Forum
Ноябрь 23, 2024, 08:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Освобождение памяти  (Прочитано 2780 раз)
Nidxogg
Гость
« : Май 31, 2014, 21:13 »

Добрый день, не дает покоя одна проблема
Код:
MyStruct{
int a;
float b;
}

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

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




Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Май 31, 2014, 22:52 »

второй точно, ведь память выделена оператором new char []. за первый не уверен.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Июнь 01, 2014, 08:55 »

Оба освободят, второй вызовет деструктор для каждого эл-та, который в данном случае ничего не делает. И зачем было приводить?
Код
C++ (Qt)
MyStruct * pArray  = new MyStruct;
..
delete pArray;
Записан
Nidxogg
Гость
« Ответ #3 : Июнь 01, 2014, 10:03 »

Цитировать
И зачем было приводить?
Столкнулся с чужим кодом, где через memcpy копируют содержимое структуры в массив char
Потом приводят указатель и передают по сигналу в соответствующий слот.
Память очищают по разному
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.09 секунд. Запросов: 23.