用Go(F5)运行程序,待程序结束后可以在下面的调试框中看到该程序对各资源的调用情况,如果有内存没有释放,也看得到。

解决方案 »

  1.   

    BoundersCheck 是个好东东
    VC自己也能找到大部分的
      

  2.   

    Use Purify or boundchecker.
      

  3.   

    请问new的内存如没delete,在程序结束后也不释放吗?
    堆内存也在程序空间内呀!
      

  4.   

    To windows 9x, the allocated memory, if not free, will be there; but to windows NT/2000, or over, they will be freed by OS itself. However, the best way is to free what you allocate, of course.
      

  5.   

    to bluesky137(我是一只小小小鸟,想要飞也飞不高) 
    我想知道具体是哪一个变量没有释放!
      

  6.   

    use crt libraryit's perfect!!
      

  7.   

    首先申明
    #define _CRTDBG_MAP_ALLOC
    #include <stdlib.h>
    #include <crtdbg.h>程序入口处加上
    _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);F5结束后就到output窗口中看结果
      

  8.   

    MFC 中,可以使用 DEBUG_NEW 宏代替 new 运算符来帮助定位内存泄漏。在程序的“Debug”版本中,DEBUG_NEW 将为所分配的每个对象跟踪文件名和行号。当编译程序的“Release”版本时,DEBUG_NEW 将解析为不包含文件名和行号信息的简单 new 操作。因此,在程序的“Release”版本中不会造成任何速度损失。如果不想重写整个程序来使用 DEBUG_NEW 代替 new,则可以在源文件中定义下面的宏:#define new DEBUG_NEW
    当进行对象转储时,用 DEBUG_NEW 分配的每个对象均将显示被分配到的文件和行号,使您可以查明内存泄漏源。MFC 框架的“Debug”版本自动使用 DEBUG_NEW,但代码不自动使用它。如果希望利用 DEBUG_NEW 的好处,则必须显式使用 DEBUG_NEW 或 #define new,如上所示。