Название: Утечка памяти в QFileDialog Отправлено: Maz от Октябрь 04, 2006, 14:04 Если написать следующий кусок кода:
Код:
то при закрытии не вся память освождаеться. Это видно в таск менеджере. QT 4.1.4, коммерческая версия. У кого-то были еще такие проблемы? Название: Утечка памяти в QFileDialog Отправлено: Hordi от Октябрь 04, 2006, 14:36 А с чего ты решил, что это утечка?
Название: Утечка памяти в QFileDialog Отправлено: Maz от Октябрь 04, 2006, 16:23 Потому что до создания диалогf в программе было, допустим, 45
объектов GDI (при этом программа занимала 13 220 байт памяти), после создания диалога стало 145 объктов GDI (при этом программа занимает 15 400 байт памяти). После закрытия диалога, как я понимаю, количество объектов GDI должно стать обратно 45, но нет, половина объктов не удаляеться и их становиться где-то 80. Если этот диалог открывать и закрывать много раз подряд, то занимаемый объем памяти программой растет, и все время увеличиваеться количество объктов GDI. По-моему это утечка. Название: Утечка памяти в QFileDialog Отправлено: Вячеслав от Октябрь 04, 2006, 17:24 Цитата: "Maz" Потому что до создания диалогf в программе было, допустим, 45 объектов GDI (при этом программа занимала 13 220 байт памяти), после создания диалога стало 145 объктов GDI (при этом программа занимает 15 400 байт памяти). После закрытия диалога, как я понимаю, количество объектов GDI должно стать обратно 45, но нет, половина объктов не удаляеться и их становиться где-то 80. Если этот диалог открывать и закрывать много раз подряд, то занимаемый объем памяти программой растет, и все время увеличиваеться количество объктов GDI. По-моему это утечка. Ну сразу после закрытия - оно может и не освободиться - лови момент когда деструктор отработает... Название: Утечка памяти в QFileDialog Отправлено: Alex03 от Октябрь 04, 2006, 17:40 Какой деструктор у статического метода? Впрочем создаваемый объект как минимум временно в дети к this прописывается.
Открываете закрываете диалог в одном цикле? Или ещё сами чёнить делаете? ОС какая? Название: Утечка памяти в QFileDialog Отправлено: Maz от Октябрь 04, 2006, 17:44 Цитата: "Alex03" Какой деструктор у статического метода? Впрочем создаваемый объект как минимум временно в дети к this прописывается. Просто открываю и закрываю диалог, без каких-либо дальнейших действий.Открываете закрываете диалог в одном цикле? Или ещё сами чёнить делаете? ОС какая? ОС- WinXp Pro SP2. Название: Утечка памяти в QFileDialog Отправлено: Dendy от Октябрь 04, 2006, 21:41 Только что проверил: в Qt 4.2 такой проблемьІ нет.
Проверял открьІванием множества QFileDialog'ов на новьІх итерациях цикла по сигналу от кнопки. Название: Утечка памяти в QFileDialog Отправлено: Alex03 от Октябрь 05, 2006, 06:38 В принципе небольшой захват ресурсов при первом использовании некоей функциональности - явление нормальное ( по крайней мере для qt :) ). Например можно запомнить текущий каталог, или там например какойнить comctrl.dll (имя вымышленное) системный подгрузить и так и оставить в памяти.
А вот в случае циклического использования ресурсы есть не должно. Обрежте приложение до минимума, типа такого псевдокода: main() { QApplication a; while(1) { QString s = QFileDialog::getOpenFileName( NULL, "Choose a file to open", "/home", "Images (*.png *.xpm *.jpg)") } } |