Здравствуйте, гость ( Вход | Регистрация )
edwardoid | Дата 15.6.2011, 22:51 |
Какая ОС? На лине это делает valgrind. Приходится работать под Windows 7, а под Linux есть конечно gcc, gdb, gprof, valgrind... |
|
RazrFalcon | Дата 15.6.2011, 16:58 |
Какая ОС? На лине это делает valgrind. |
|
edwardoid | Дата 15.6.2011, 13:34 |
Как посмотреть сколько места нимает каждый объект в RAM? Как проверить на прожорливость программу? Как посмотреть сколько места нимает каждый объект в RAM? Как проверить на прожорливость программу? |
|
Litkevich Yuriy | Дата 15.6.2011, 6:06 |
Деструктор вызовется при возвращении в цикл обработки событий, см. доку по QObject::deleteLater() | |
silver47 | Дата 15.6.2011, 4:59 |
Это почему? Не знаю. Пробовал делать так, деструктор не вызывался сразу после закрытия окна. А вот если поставить флаг удалять виджет сразу после закрытия - то деструктор вызывается сразу же после закрытия. В общем, по итогам: или флаг Qt::WA_DeleteOnClose или ручками delete %Имя виджета% |
|
Litkevich Yuriy | Дата 14.6.2011, 16:08 |
Но когда закрываю окна, память не высвобождается. Нужно делать так, как сказал silver47, т.е. QWidget::setAttribute(Qt::WA_DeleteOnClose);mdiChild1->deleteLater(); - недостаточно. Деструктор не будет вызван. Это почему? |
|
edwardoid | Дата 14.6.2011, 15:56 |
Понимаю ваше удивление, увы сейчас мне верить нечему кроме как ТМ. | |
RazrFalcon | Дата 14.6.2011, 14:47 |
mdiChild1->deleteLater(); - недостаточно. Деструктор не будет вызван. Необходимо в конструкторе класса напрямую указать:
Именно это я выше и написал. PS: с каких это пор мы верим диспетчеру? Тем более виндовому... |
|
silver47 | Дата 14.6.2011, 13:25 |
mdiChild1->deleteLater(); - недостаточно. Деструктор не будет вызван. Необходимо в конструкторе класса напрямую указать:
|
|
edwardoid | Дата 14.6.2011, 13:17 |
По ходу да, только все равно обычный Task manager все равно показывает старое значение занятой памяти. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 19.4.2024, 22:44 |