1.如何检测DLL中的内存泄漏?据说使用Visual Leak Detector可以,但是使用时只检测到EXE的内存泄漏,却没有检测到DLL中的。
2.如果该C++的DLL是被C#程序调用的又该如何检测该DLL的内存泄漏情况?

解决方案 »

  1.   

    如果dll是MFC的, 可以直接使用 #define new  DEBUG_NEW这样来检测.
    如果没有, 也可以定义一个头文件.内容如下:
    #pragma once#ifdef _DEBUG
    #define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)
    #else
    #define DEBUG_CLIENTBLOCK
    #endif
    #define _CRTDBG_MAP_ALLOC
    #include <crtdbg.h>
    #ifdef _DEBUG
    #define new DEBUG_CLIENTBLOCK
    #endif//注意, 仍然有些地方会误报, 特别是全局变量.
    class CMemLeakCheck
    {
    private:
    CMemLeakCheck()
    {

    }
    public:
    static void InitMemLeakCheck()
    {
    _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
    }
    };在dll初始化的时候调用InitMemLeakCheck
      

  2.   

    用windbg。
    参考
    http://www.cnblogs.com/SkyMouse/archive/2012/07/05/2578553.html