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内存泄漏检测工具)