memory leaks!
От: CooLer Россия http://bestsoft.far.ru
Дата: 31.07.02 15:27
Оценка:
В оладочном режиме после работы приложения в окошко Debug вываливается информация такого характрера:

Detected memory leaks!
The thread 0x604 has exited with code 0 (0x0).
Dumping objects ->
thrdcore.cpp(166) : {227} client block at 0x00D03D70, subtype 0, 112 bytes long.
a CWinThread object at $00D03D70, 112 bytes long
{226} normal block at 0x00D01550, 4 bytes long.
 Data: <    > 01 00 00 00 
{225} normal block at 0x00D02580, 1 bytes long.
 Data: < > 0A 
F:\MyProjects\Wallpaper Magic\Wallpaper Magic.cpp(174) : {214} client block at 0x00D03E10, subtype 0, 476 bytes long.
a CMainFrame object at $00D03E10, 476 bytes long
Object dump complete.
The thread 0x3FC has exited with code 0 (0x0).


Понятно, что где-то в программе забыл прочистить память. Конечно в общем случае все это неважно, т.к. теоретически ОС должна сама все отчистить. Есдинственное когда это важно, если ось 95/98/Me (они очищают толь теоретически; практически помогает только ребут) или программа должна непрерывно работать очень долго и утечки памяти могут повредить работе.

Это все не про мой случай, однако хотелось бы написать программу, которая бы работала максимально корректно. И, соответственно, хотелось бы все эти leaks поймать. Но как? В окно Debug вываливается какая-то обкоцаная информация, типа "normal block at 0x00D01550, 4 bytes long". Чесно говоря, адрес 0x00D01550 мне ничего не говорит.

Итак, есть ли какой-то способ поймать memory leaks в программе? Т.е. получить конкретную информацию: для какой переменной память выделил, а убрать за собой забыл.

Спасибо.

P.S. Я конечно понимаю, что хочу слишком много и так не бывает. Однако, может быть хотя бы можно продвинуться подальше адреса 0x00D01550 способом более простым, чем смотреть адреса всех указателей (программа довольно большая).
"Выше голову" — сказл палач, надевая петлю
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.