用_CrtDumpMemoryLeaks()检查我用vc2008写的一个程序,发现有内存泄露,但是我检查了半天代码都没有发现我的代码哪里存在内存泄露;然后我又在vc2008建立了一个基于对话框的程序,没有加任何代码。然后用_CrtDumpMemoryLeaks();检查是否存在内存泄露,居然发现也存在,请问各位这是怎么回事,是检查的方法有问题吗?谢谢!

解决方案 »

  1.   

    用 CrtDumpMemoryLeaks 能解决一部分内存泄露
    但是每次内存泄露错误出现的位置不确定的话,这个方法可能就不适用了
      

  2.   

    楼主可以参考
    http://blog.csdn.net/ninsun/article/details/5320492
      

  3.   

    这个方法我用过,_CrtSetBreakAlloc只有在存在源代码的时候才有用
    而且为什么vc2008自建的程序都有内存泄露呢?我怀疑是我的检测方法不对。
      

  4.   

    你是不是在 MFC 的 InitInstance 中 dialog 结束之后,加这个语句了,因为还有一些库没有释放,包括 CString 的一些内存都没有释放呢,当然会误报(是你主动调用这个函数导致的);对于 MFC 的程序,会自动报告内存泄漏的,不用主动加。
      

  5.   

     CrtDumpMemoryLeaks
    报告的是调用该方法之前分配但没有释放的,MFC程序中,在你调用这个函数之后肯定还有一些清理操作的,所以会误报