Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: dr_Begemot от Май 07, 2010, 08:32



Название: Никто не юзал Deleaker?
Отправлено: dr_Begemot от Май 07, 2010, 08:32
Никто не юзал Deleaker для контроля за утечками памяти?

Просто студия иногда показывает утечки памяти, все говорят забей, студия не видит, что отрабатывают некоторые деструкторы...
С другой стороны, утечки могут быть и не связаны именно с этим, а являться самыми что ни на есть утечками)))

Во общем решил попрообовать проверить приложение сторонней утилитой, в данном случае Deleaker'ом и вот что я получил:

Searching for allocated memory block: leaks detected
Searching for created GDI objects: leaks not detected
Searching for created USER objects: leaks not detected
Searching for created handles: leaks detected

Не могли бы вы разъяснить, что есть GDI, USER, и стоит ли обращать внимание на утечки памяти в  handles?
И что значит 1я строчка?

Спасибо)


Название: Re: Никто не юзал Deleaker?
Отправлено: lit-uriy от Май 07, 2010, 10:12
вроде как первая строчка это как раз new/delete, т.е. выделение памяти


Название: Re: Никто не юзал Deleaker?
Отправлено: dr_Begemot от Май 07, 2010, 11:13
вроде как первая строчка это как раз new/delete, т.е. выделение памяти

Думаете это м.б. серъезно?
А что про handles? Я подумал, м.б. это такие объекты, которые создаются, а их удаление берет на себя ОС, т.е. по завершению работы программы память освобождается.


Название: Re: Никто не юзал Deleaker?
Отправлено: Гурман от Май 07, 2010, 12:48
Цитировать
Думаете это м.б. серъезно?

о чем этот вопрос? если о серьезности утечки памяти, то конечно серьезно...

если о правдивости Deleaker - меня это тоже интересует, поскольку хочется проверить у себя утечки, чужой опыт приветствуется

handles - это ссылки виндозы на ее системные объекты, программа захватывала объекты и не освобождала их, это означает, что в какой-то момент свободных хэндлов может не хватить, и наступит облом, причем системный


Название: Re: Никто не юзал Deleaker?
Отправлено: dr_Begemot от Май 07, 2010, 13:02
Цитировать
Думаете это м.б. серъезно?

о чем этот вопрос? если о серьезности утечки памяти, то конечно серьезно...

если о правдивости Deleaker - меня это тоже интересует, поскольку хочется проверить у себя утечки, чужой опыт приветствуется

handles - это ссылки виндозы на ее системные объекты, программа захватывала объекты и не освобождала их, это означает, что в какой-то момент свободных хэндлов может не хватить, и наступит облом, причем системный


протестил несколько проектов из qt-example Deleaker'ом, на них он пишет тоже что и у меня, т.е. detected на memory block и handles.


Название: Re: Никто не юзал Deleaker?
Отправлено: dr_Begemot от Май 07, 2010, 13:05
Может ли это быть неким qt-шным багом, который разработчикам qt еще предстоит исправить?
Или просто Deleaker врет?

 ???


Название: Re: Никто не юзал Deleaker?
Отправлено: dr_Begemot от Май 07, 2010, 13:15
Создал самый что ни на есть пустой проект на MFC. Запустил, прогнал через Deleaker.

Результат:

Searching for allocated memory block: leaks detected
Searching for created GDI objects: leaks not detected
Searching for created USER objects: leaks not detected
Searching for created handles: leaks not detected

Далее, создал проект win32 console application:
Код:
#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}

Результат работы Deleaker'а остался прежним:
Searching for allocated memory block: leaks detected
Searching for created GDI objects: leaks not detected
Searching for created USER objects: leaks not detected
Searching for created handles: leaks not detected

Исходя из этого можно сделать вывод, что на строчку про memory block можно не обращать внимания.
Остается вопрос с handles... м.б. в консольном приложении они и не затрагиваются вообще (или я ошибаюсь?), но в MFC то должны наверное!
Что с handles в Qt происходит, товарищи?  ???


Название: Re: Никто не юзал Deleaker?
Отправлено: umts от Май 07, 2010, 20:37
Обнаружение утечек памяти в MS Visual Studio. Пока не подводило.
http://www.rsdn.ru/article/vcpp/leaks.xml


Название: Re: Никто не юзал Deleaker?
Отправлено: lit-uriy от Май 08, 2010, 00:01
>>Исходя из этого можно сделать вывод
вывод надо делать, когда программа покажет, где именно утечка. А если она говорит только, что "мол есть утечка", то такой программе место на помойке.


Название: Re: Никто не юзал Deleaker?
Отправлено: Гурман от Май 08, 2010, 17:42
Цитировать
Остается вопрос с handles... м.б. в консольном приложении они и не затрагиваются вообще (или я ошибаюсь?), но в MFC то должны наверное!

handles используются когда начинаете работать с окнами

если уж взялись тестировать, проверьте плз на простейшем Qt-приложении с одним окном


Название: Re: Никто не юзал Deleaker?
Отправлено: dr_Begemot от Май 11, 2010, 09:10
>>Исходя из этого можно сделать вывод
вывод надо делать, когда программа покажет, где именно утечка. А если она говорит только, что "мол есть утечка", то такой программе место на помойке.

Ну она в общем-то и показывает, тока ссылки на код, где происходит выделение6 якобы утекаемой памяти, находятся вне моего ведения))) Т.е. код либо Qt-шный, либо win api.


Название: Re: Никто не юзал Deleaker?
Отправлено: dr_Begemot от Май 11, 2010, 09:11
Цитировать
Остается вопрос с handles... м.б. в консольном приложении они и не затрагиваются вообще (или я ошибаюсь?), но в MFC то должны наверное!

handles используются когда начинаете работать с окнами

если уж взялись тестировать, проверьте плз на простейшем Qt-приложении с одним окном


Я проверял несколько простейших примеров из qt-example:
Searching for allocated memory block: leaks detected
Searching for created GDI objects: leaks not detected
Searching for created USER objects: leaks not detected
Searching for created handles: leaks detected