crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> почему не работает realloc?
mezmay
  опции профиля:
сообщение 9.8.2011, 8:52
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Почему этот код работает:
QFile *pFiles = NULL;
pFiles = new QFile[3];
pFiles[0].setFileName("name");

а этот нет?:
QFile *pFiles = NULL;
pFiles = (QFile *)realloc(pFiles, 3 * sizeof(QFile));
pFiles[0].setFileName("name");

- вылетает на строке pFiles[0].setFileName("name"); - access violation reading location...

Сообщение отредактировал mezmay - 9.8.2011, 8:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 9.8.2011, 10:00
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


realloc просто распределяет память. Она не создает объектов, не вызывает их конструкторов.
Т.е. во втором примере ты просто распределил память размером 3 * sizeof(QFile) и все. Сами объекты QFile при этом не созданы. Поэтому в третьей строке ты обращаешься к несуществующему объекту.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 17.1.2021, 19:24