在Debug状态下测试内存泄漏问题:
// Declare the variables needed
#ifdef _DEBUG
    CMemoryState oldMemState, newMemState, diffMemState;
    oldMemState.Checkpoint();
#endif
// do your memory allocations and deallocations...

#ifdef _DEBUG
    newMemState.Checkpoint();
    if(diffMemState.Difference( oldMemState, newMemState ) )
    {
        TRACE( "\n\n\nAttention please: Memory leaked!\n\n\n" );
    }
else
{
TRACE( "\n\n\nCongratulations: No memory leaked!\n\n\n" );
}
#endif

解决方案 »

  1.   

    在Debug状态下执行时,如果有内存泄漏下面的窗口中会出现提示
      

  2.   

    debug状态下可以直接看到内存泄漏的情况。也可以用rational公司的purify,但这个东西检查vc wizard生成的程序都会发现内存泄漏。
      

  3.   


    可以利用CMemoryState类帮助检测内存泄漏,例如:
    #ifdef _DEBUG
        CMemoryState oldMemState, newMemState, diffMemState;
        oldMemState.Checkpoint();
    #endif
         ...
    (被测试的代码)
         ...
    #ifdef _DEBUG
        newMemState.Checkpoint();
       if(diffMemState.Difference(oldMemState, newMemState))    {
            TRACE(“Memory Leaked Here:\n\n" );
        }
    #endif
      

  4.   

    哈哈,如果是非window 程序呢?
    如果没有使用MFC呢?1。写自己的内存分配和释放函数:
    C就写mymalloc和myfree,然后使用它们。C++ 就重载全局new 和 delete。
    2。_onexit()!