天天看点

VC++内存泄漏检测方法(2):Checkpoint/DumpStatistics

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

继续阅读