LINUX.ORG.RU

Деструкторы! (в QT )


0

0

Люди, помогите плс разобраться. У меня постоянные утечки памяти, программа вываливается. Очень подозреваю деструкторы. Хотелось бы получить ответы на следующие вопросы:

Когда вызываются деструкторы форм ?
До сигнала close() или после ?
Всегда ли они вызываются ?
Должен ли я прописывать в деструкторе все объекты которые есть в форме?(типа в конструкторе label=new QLabel(this);/delete label;



Как я понял, деструктор виджета вызывается в момент уничтожения родительского виджета. В частности, для этого используется ссылка на родителя при создании виджета: в момент создания он регистрируется у родителя как дочерний. При обработке close или QCloseEvent по умолчанию виджет просто прячется если не установлен флаг WDestructiveClose. Да, close - не сигнал а слот.

anonymous
()

еще есть такая прога как memprof показывает утечки

anonymous
()

Вот например , я создаю в конструкторе какой-то объект, делаю свой обработчик закытия формы , типа
hide();
close(TRUE);
Должен ли я освободить память занимаемую созданным в конструкторе обектом, т.е. delete myobject?
Если да , то где это надо сделать?
До close() или уже после?

EraSER
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.