【发布时间】:2011-03-29 19:29:23
【问题描述】:
出于调试目的,当我编写应用程序时,我要做的第一件事是将以下内容放入 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 分配引起的泄漏。
谢谢!
【问题讨论】:
标签: c++ windows com memory-leaks