1.在头部加入1.1方式1: #ifdef _DEBUG #define DEBUG_MALLOC(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__) #define malloc(s) DEBUG_MALLOC(s) #include <crtdbg.h> #define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__) #define new DEBUG_NEW #endif //__FILE__文件路径 //__LINE__行号 1.2方式2: #ifdef _DEBUG /* _CRTDBG_MAP_ALLOC需要在#include <crtdbg.h>之前定义 但是在代码中定义_CRTDBG_MAP_ALLOC不起作用,需要再做如下定义: //#define DEBUG_MALLOC(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__) //#define malloc(s) DEBUG_MALLOC(s) 故最好直接在Preprocessor中定义_CRTDBG_MAP_ALLOC。 */ //#define _CRTDBG_MAP_ALLOC #include <crtdbg.h> #define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__) #define new DEBUG_NEW #endif 2.在主函数中加入 _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); _CrtSetBreakAlloc(91); //_CrtSetDbgFlag 加入后会进行内存泄漏检测 //_CrtSetBreakAlloc加入此句后,断点会断在泄漏的位置91行上,程序不再往下运行。没有此句程序会运行下去,并在输出中输出文件行号等于泄漏信息。