3 c++ windows com memory-leaks
出于调试目的,当我编写应用程序时,我要做的第一件事就是将以下内容放入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
Run Code Online (Sandbox Code Playgroud)
然后我将以下内容添加到程序的main()函数的开头:
#ifdef _DEBUG
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
//_CrtSetBreakAlloc( 670 );
#endif
Run Code Online (Sandbox Code Playgroud)
重新定义新操作符以提供泄漏信息是一种有用的工具.但是CoTaskMemAlloc和CoTaskMemFree呢?如何使用这些来检测泄漏?
我正在编写使用COM和DirectShow的软件,并且需要知道如何跟踪使用CoTask分配导致的泄漏.
谢谢!
摆脱手动内存管理,你将摆脱泄漏.拥抱RAII,永远不要使用资源,除非它包含在一个处理程序中,其唯一目的是包装该资源.
多年来我不认为我有内存泄漏(或崩溃,FTM).但是delete在过去的十年里,我写了不到六次.
| 归档时间: |
|
| 查看次数: |
6580 次 |
| 最近记录: |