为了调试目的,在编写应用程序时,我首先将以下内容放入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
重新定义 new 操作符以提供泄漏信息是一种有用的工具。但是对于 CoTaskMemAlloc 和 CoTaskMemFree 呢?如何使用它们来检测泄漏?
我正在编写使用 COM 和 DirectShow 的软件,需要知道如何跟踪使用 CoTask 分配引起的泄漏。
谢谢!