debug状态下执行一遍,看output栏dump输出就知道了。

解决方案 »

  1.   

    没这么简单,又不是mfc下看new delete引起的泄漏
      

  2.   

    一般情况下,如果使用了AddRef,但没有调用Release的情况下,MFC的DEBUG环境下是会通过DUMP输出内存泄漏的,而且这种内存泄漏BouncChecker是检查不出来的。如果在输出框中没有报的话,基本上是没有内存泄漏的。
      

  3.   

    只要是VC的开发编译环境,都可以在DEBUG OUTPUT WINDOW观察内存泄漏等,与是否用MFC无关
      

  4.   

    那看一下这个贴子:教材上说 _Module.Init了就要_Module.Term();的;
    MCSD实验程序上也_Module.Term();了,我的程序也_Module.Term();,但结果都有内存泄漏!!!
    MSDN上的例子只有_Module.Init,没有_Module.Term();,我试了擦去_Module.Term();,结果都正常,
    到底是什么道理??????
    谢谢各位指教 
    下面是一位朋友的回答:有什么联系吗?2)以下是CComModule::Term()源程序,其中在定义了_ATL_DEBUG_INTERFACES时要调用DumpLeakedThunks()输出Leak信息.所以你不调用_Module.Term()自然不会输出内存泄漏信息,但实际上你的程序中应该存在内存泄漏!!
        CComModule::Term()
        {
    #ifdef _ATL_DEBUG_INTERFACES
            m_bDestroyHeap = false; // prevent heap from going away
            AtlModuleTerm(this);
            DumpLeakedThunks();
            delete m_paThunks;
    #ifndef _ATL_NO_MP_HEAP
            if (m_phHeaps != NULL)
            {
                for (DWORD i = 0; i <= m_dwHeaps; i++)
                    HeapDestroy(m_phHeaps[i]);
            }
    #endif
            if (m_hHeap != NULL)
                HeapDestroy(m_hHeap);
    #else
            AtlModuleTerm(this);
    #endif // _ATL_DEBUG_INTERFACES
        } 
      

  5.   

    using numega boundchecker.
    driverdevelop.com有down
      

  6.   

    MCSD教材关于出接口的例子报
    Detected memory leaks!
    Dumping objects ->
    {40} normal block at 0x007700A0, 32 bytes long.
     Data: <x A          i  > 78 84 41 00 01 00 00 00 04 CD CD CD C4 69 97 81 
    oleinit.cpp(86) : {31} client block at 0x00770440, subtype 0, 68 bytes long.
    a CCmdTarget object at $00770440, 68 bytes long
    Object dump complete.
    这算不算正常,到底是什么道理?