Я включил отладку кучи, чтобы попробовать и отладить некоторые ошибки утечки памяти. Я делаю это, в том числе следующие:Использование отладки кучи MS VC++ 2005
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
вместе с вызовом _CrtDumpMemoryLeaks()
в зависимости от интересов.
Затем я также изменить конфигурацию проекта свойств, чтобы установить тип отладки для 'Native Only'
и добавить определение '_DEBUG'
препроцессора и C/C++ генерации кода во время выполнения библиотеки /MDd
. Я обнаружил, что независимо от того, где я положил вызов функции _CrtDumpMemoryLeaks()
, он выгружает вывод утечки памяти следующим образом.
Detected memory leaks!
Dumping objects ->
{2606} normal block at 0x000000003D3A5370, 32 bytes long.
Data: <VAR1> 54 48 45 52 4D 41 4C 5F 43 4F 4E 44 55 43 54 49
{2605} normal block at 0x000000003D3A52E0, 32 bytes long.
Data: <VAR2> 52 4F 43 4B 5F 48 45 41 54 5F 43 41 50 41 43 49
{2604} normal block at 0x000000003D3A5250, 32 bytes long.
Data: <VAR3> 45 51 55 49 4C 49 42 52 41 54 49 4F 4E 5F 52 45
{2603} normal block at 0x000000003D3A51C0, 32 bytes long.
Data: <VAR4> 4D 41 58 5F 57 41 54 45 52 5F 43 41 50 49 4C 4C
{2602} normal block at 0x000000003D3A5130, 32 bytes long.
Data: <VAR5> 4D 41 58 5F 47 41 53 5F 43 41 50 49 4C 4C 41 52
{2601} normal block at 0x000000003D3A50A0, 32 bytes long.
Data: <VAR6> 57 41 54 45 52 5F 43 4F 4D 50 52 45 53 53 49 42
{2600} normal block at 0x000000003D3A5000, 48 bytes long.
Что это может означать? Означает ли это, что если в точке вызова был выход дампа, то перед этим возникает ошибка/утечка? Можем ли мы это сделать точно? Если нет, это не кажется действительно полезной утилитой. Любые рекомендации/помощь в том, как правильно его использовать или в отношении интерпретации. Благодаря!
Спасибо .. Я дам вам попробовать. Цените свой ответ! –
Кажется, что это действительно только для 2008/2010. Знаете ли вы какие-либо варианты на 2005 год? Ничего, похоже, что он поддерживает 2005 год .. даст ему шанс. –