MFC程序貌似会自动添加下面提到的代码
检测内存泄漏的主要工具是调试器和 C 运行库 (CRT) 调试堆函数。
若要启用调试堆函数,请在程序中包括以下语句:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
为了 CRT 函数能够正常工作,#include
语句必须遵循此处所示的顺序。
使用这些语句启用调试堆函数之后,可以在某个应用程序退出点之前设置一个对 _CrtDumpMemoryLeaks
的调用。如果应用程序有多个退出点,并不需要在每个退出点都手动设置一个对 _CrtDumpMemoryLeaks 的调用。 应用程序开头部分对 _CrtSetDbgFlag
的调用会导致在每个退出点自动调用 _CrtDumpMemoryLeaks
。 你必须设置两个位域,如下所示:
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );