MFC工程,全部在App中完成
1.在 App.h 头文件声明
#define MEMORY_STATE #ifdef MEMORY_STATE private: CMemoryState m_msOld; CMemoryState m_msNew; CMemoryState m_msDiff; #endif // MEMORY_STATE
2.在 App::InitInstance() 中添加如下代码:
#ifdef MEMORY_STATE m_msOld.Checkpoint(); #endif // MEMORY_STATE
3.在 App::ExitInstance() 中添加如下代码:
#ifdef MEMORY_STATE m_msNew.Checkpoint(); if (m_msDiff.Difference(m_msOld, m_msNew)) { afxDump << "\n------------------ Memory Leaked : ------------------\n"; m_msDiff.DumpStatistics(); afxDump << "------------------Dump Complete !------------------\n\n"; } #endif
另外,除了_CrtSetBreakAlloc这方法之外,还可以使用Visual Leak Detector。详情见:
VC++内存泄漏检测方法(3):Visual Leak Detector(VLD内存泄漏检测工具)