Название: Очиска памяти Отправлено: mevn от Декабрь 16, 2013, 06:16 Добрый день.
Столкнулся с проблемой. Имеется главная форма. На ней три кнопки. При нажатии на первую происходит выход из программы. При нажатии на вторую - перезапуск программы. При нажатии на третью - открывается новая форма (при создании новой формы специально допущена ошибка: при закрытии данной формы, выделенная для нее память не очищается) Код: #include "test_connect.h" Код: #include "test_connect.h" Название: Re: Очиска памяти Отправлено: carrygun от Декабрь 16, 2013, 12:28 Ну например при создании *m_t положить *m_t в QMap, а в нужный момент пробежаться по всем элементам Кумапа и удалить их.
Название: Re: Очиска памяти Отправлено: mevn от Декабрь 16, 2013, 12:35 Ну например при создании *m_t положить *m_t в QMap, а в нужный момент пробежаться по всем элементам Кумапа и удалить их. Спасибо.Но это тестовый пример, для проверки. На самом деле, данная процедура нужна, потому что найти где создавался *m_t не представляется возможным. Нужно либо полностью перезапустить приложение, либо каким-то образом очистить все подобные *m_t. Название: Re: Очиска памяти Отправлено: Igors от Декабрь 16, 2013, 12:50 Такой возможности нет в языке, решается инструментами отладки. Впрочем "сборщики мусора" (которыми так хвалятся др языки) могут и не помочь т.к. ссылки на неудаленный объект возможны. Если хорошего инструмента нет, можно перекрыть new/delete. Для начала неплохо попечатать счетчики подозрительных объектов
Название: Re: Очиска памяти Отправлено: Bepec от Декабрь 16, 2013, 13:44 Самое простое, если не можете найти место - использовать синглтон со списком указателей на ваши классы.
И в конструкторе класса помещать указатели в список,а в деструкторе удалять. Все оставшиеся в списке объекты нужно будет удалить принудительно. |