![]() |
|
|
![]()
|
|
| Purple_Light |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.4.2007 Репутация: нет Всего: нет |
У меня есть QMap следующего вида:
Он является членом класса и в деструкторе я его удаляю как
Назначение этого мапа очень простое. Пользователь кликает на элемент в дереве, нажатый QStandardItem* ищется в мапе, выбирается соответствующий ему экземпляр класса и дальше с ним операции происходят. Работает это все нормально, кроме того, что программа valgrid говорит, что происходят утечки памяти при добовлении пар в мап. Т.е. когда я добовляю элемент в мап
Мне казалось, что макрос qDeleteAll проходится по мапу и удаляет все его элементы, но похоже что это не так. Следовательно мой вопрос, как правильно в этом случае удалить мап? И вообще является ли концепция правильной, когда в мапе в качестве ключа используется указатель на экземпляр класса (а например не int)? |
||||||
|
|||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Сделай проверку, создай список в который помести все указатели на экземпляры классов, а внутри деструктора каждого класса заставь удалять себя из этого списка. Те указатели, что останутся в списке - утечки.
Еще на эту надпись обрати внимание:
Т.е. те указатели, которые ты используешь в качестве ключа - удалены не будут. Может есть смысл использовать QSharedPointer? Это сообщение отредактировал(а) SABROG - 29.4.2009, 21:12 |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Как айтемы создаются? Как модель создаётся? Она деаттачится от дерева? Дерево удаляется? qDeleteAll, как правильно заметил SABROG, отлично вызовет delete для всех значений, но не ключей. Да и, вообще говоря, зачем тебе этот мэп? Либо сохраняй данные нужные по своим юзер-ролям, либо (что лучше) создай свою модель. Дженерик-решения тем и плохи, что они дженерик |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |