Как это не важно чистить память? Если у тебя работает приложение, и оно отжирает память, то в конечном итоге машина будет тормозить. А чтобы поймать все лики, найди все операторы new в проекте, и засунь объекты которые создаются оператором new в смартптр
С вероятностью 98% ликов не должно быть.
Здравствуйте CooLer, Вы писали:
CL>В оладочном режиме после работы приложения в окошко Debug вываливается информация такого характрера:
CL>Detected memory leaks!
CL>The thread 0x604 has exited with code 0 (0x0).
CL>Dumping objects ->
CL>thrdcore.cpp(166) : {227} client block at 0x00D03D70, subtype 0, 112 bytes long.
CL>a CWinThread object at $00D03D70, 112 bytes long
CL>{226} normal block at 0x00D01550, 4 bytes long.
CL> Data: < > 01 00 00 00
CL>{225} normal block at 0x00D02580, 1 bytes long.
CL> Data: < > 0A
CL>F:\MyProjects\Wallpaper Magic\Wallpaper Magic.cpp(174) : {214} client block at 0x00D03E10, subtype 0, 476 bytes long.
CL>a CMainFrame object at $00D03E10, 476 bytes long
CL>Object dump complete.
CL>The thread 0x3FC has exited with code 0 (0x0).
CL>Понятно, что где-то в программе забыл прочистить память. Конечно в общем случае все это неважно, т.к. теоретически ОС должна сама все отчистить. Есдинственное когда это важно, если ось 95/98/Me (они очищают толь теоретически; практически помогает только ребут) или программа должна непрерывно работать очень долго и утечки памяти могут повредить работе.
CL>Это все не про мой случай, однако хотелось бы написать программу, которая бы работала максимально корректно. И, соответственно, хотелось бы все эти leaks поймать. Но как? В окно Debug вываливается какая-то обкоцаная информация, типа "normal block at 0x00D01550, 4 bytes long". Чесно говоря, адрес 0x00D01550 мне ничего не говорит.
CL>Итак, есть ли какой-то способ поймать memory leaks в программе? Т.е. получить конкретную информацию: для какой переменной память выделил, а убрать за собой забыл.
CL>Спасибо.
CL>P.S. Я конечно понимаю, что хочу слишком много и так не бывает. Однако, может быть хотя бы можно продвинуться подальше адреса 0x00D01550 способом более простым, чем смотреть адреса всех указателей (программа довольно большая).