В целях отладки, когда я пишу приложение, первое, что я делаю, это помещаю в stdafx.h следующее:
// -- leak detection ----------------------------------------------------------
#ifdef _DEBUG
// http://msdn.microsoft.com/en-us/library/e5ewb1h3(v=VS.80).aspx
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif
Затем я добавляю следующее в начало функции main () программы:
#ifdef _DEBUG
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
//_CrtSetBreakAlloc( 670 );
#endif
Переопределение нового оператора для предоставления информации об утечке является полезным инструментом. Но как насчет CoTaskMemAlloc и CoTaskMemFree? Как я могу обнаружить утечки, используя их?
Я пишу программное обеспечение, которое использует COM и DirectShow и должно знать, как отслеживать утечки, вызванные использованием CoTask.
спасибо!