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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT контейнеры и указатель С++  (Прочитано 2391 раз)
MaxoBik
Гость
« : Май 08, 2015, 20:11 »

Есть такое поле класса:

QMap<int, QT_Some_Object*> * class_field;

QT_Some_Object это класс QT, который не наследует от QObject.
Так вот вопрос, если я удалю один из элементов из QMap::remove(int) - удалится ли указатель и целевой объект в куче на который он указывает?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Май 08, 2015, 20:15 »

Нет
Записан
MaxoBik
Гость
« Ответ #2 : Май 08, 2015, 20:24 »

Нет
Почему то удаления объекта вручную через delete ведет к крашу:

Код:
int key = 1;
this->class_field->insert(  key, new QT_Some_Object( 99999 )  );
.....
QT_Some_Object* tempObject = this->class_field->value(key);
.....
class_field->remove(key);
delete tempObject;
« Последнее редактирование: Май 08, 2015, 21:30 от MaxoBik » Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Май 08, 2015, 21:23 »

странно, вставляете в tempObject, а удаляете из class_field...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
MaxoBik
Гость
« Ответ #4 : Май 08, 2015, 21:32 »

странно, вставляете в tempObject, а удаляете из class_field...
Да, опЯчатка, поправил. Но проблема не в этом, непонятно почему не удается удалить объект и указатель, если удалить до remove удаляется без проблем, после remove краш, но указатель после remove не удаляется, т.е. не null.

ПС, все нашел в чем проблема, она не в remove, в моем коде.
« Последнее редактирование: Май 08, 2015, 21:40 от MaxoBik » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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