要想检查到memory leaks,必须包含<afx.h>头文件。
如果不想包含<afx.h>头文件,可以用#pragma comment(lib, "mfc42ud.lib") 
如果有内存泄露会在Debug的时候出提示

解决方案 »

  1.   

    要想检查到memory leaks,必须包含<afx.h>头文件。
    如果不想包含<afx.h>头文件,可以用#pragma comment(lib, "mfc42ud.lib") 
    如果有内存泄露会有Debug调试
      

  2.   

    如果我根本就没用MFC,比如用ATL,那么应该如何检查那?
      

  3.   

    用Bounds Checker或者Rational Purify
      

  4.   

    按F5 让程序以Debug的形式运行,运行完以后,看下面的Output(输出)窗口,如果有泄漏,会有提示:memery leak ,后面跟着出错代码所在的行。
      

  5.   


    用下面的类检查,效果停好的,可以把它放在程序的前面;
    class FindMemoryLeaks
    {
          _CrtMemState m_checkpoint;
    public:
          FindMemoryLeaks()
          {
               _CrtMemCheckpoint(&m_checkpoint);
          };
          ~FindMemoryLeaks()
          {
                _CrtMemState checkpoint;
                _CrtMemCheckpoint(&checkpoint);
                _CrtMemState diff;
                _CrtMemDifference(&diff, &m_checkpoint, &checkpoint);
                _CrtMemDumpStatistics(&diff);
                _CrtMemDumpAllObjectsSince(&diff);
          };
    };
    使用时:
    int main(int argc, char* argv[])
    {
          FindMemoryLeaks fml;
          int * p = new int;
          return 0;
    }
    按F5 让程序以Debug的形式运行,运行完以后,看下面的Output(输出)窗口,如果有泄漏,会有提示:memery leak ,后面跟着出错代码所在的行。
      

  6.   

    我建议你用工具来做
    BoundsChecker 6.0 for visual c++这个工具很好,很多大公司的开发部门都用这个(当然也有bcb,delphi的版本)
      

  7.   

    Bounds Checker 好用
    purify不会