用具体的一段代码来说明吧
比如
void fun()
{
    int *p = new int(10);
}
在这个函数中会有内存泄漏,要是没有注意到,或是比较隐蔽,该怎么样才知道呢?

解决方案 »

  1.   

    Refer to the links below, FYI: http://www.codeproject.com/useritems/leakfinder.asp
    http://www.codeproject.com/debug/debugtips.asp
    http://www.codeproject.com/vcpp/gdiplus/leakchkgdiplus.asp
    http://www.codeproject.com/system/howbig.asp
      

  2.   

    如果使用 MFC 工程的话,Output 可以出现 detect memory leaks 提示。如果不是,在 *.cpp 文件中添加(并修改 project settings --> C/C++ --> Project options : /ML(d) 为 /MT(d) )#include <afx.h>#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif也可以检测由 new 引起的 memory leak。此外,如果需要检测 malloc 引起的 memory leak ,参考 MSDN "_malloc_dbg" ,至于其他的 memory leak 或 GDI leak 就没有办法了。
      

  3.   

    BoundsChecker for Visual C++ 6.0是针对开发出高质量的32位Visual C++ 6.0应用程序的最为全面的错误检测工具。BoundsChecker 能自动指出静态,堆栈内存错误和资源泄漏问题。与一般的内存检测工具不同,BoundsChecker 能够校验最新的 Windows APIs,包括 ActiveX, DirectX, OLE/COM, ODBC等等。BoundsChecker能够指出所有与 Windows 平台兼容性相关的问题。通过使用 BoundsChecker,你甚至可以在离开Visual C++ 6.0开发环境的情况下也能发现和修复绝大多数的错误。