如CSystemInfo是DLL中的一个Singleton:
CSystemInfo& CSystemInfo::GetInstance( )
{
    static CSystemInfo cSystemInfo;
    return cSystemInfo;
}
那么在EXE结束后DLL才释放。造成了内存泄露。
Detected memory leaks!
Dumping objects ->
{328} normal block at 0x003CB350, 32 bytes long.
Data: <Intel Pentium 4 > 49 6E 74 65 6C 20 50 65 6E 74 69 75 6D 20 34 20 
{327} normal block at 0x003CB420, 71 bytes long.
Data: <Microsoft Window> 4D 69 63 72 6F 73 6F 66 74 20 57 69 6E 64 6F 77 
{251} normal block at 0x003C8888, 32 bytes long.
Data: <                > C4 A7 C1 A6 B1 A6 B1 A6 CF C2 D4 D8 CF B5 CD B3 
{250} normal block at 0x003C8828, 32 bytes long.
Data: <         (C)    > B0 E6 C8 A8 CB F9 D3 D0 20 28 43 29 20 CE DE CF 
{249} normal block at 0x003C61C0, 32 bytes long.
Data: <                > B1 B1 BE A9 CE DE CF DE BB A5 CD A8 BF C6 BC BC 
Object dump complete.
怎么样解决这个问题??

解决方案 »

  1.   

    类似问题可以不解决,没有任何实际副作用,其实MFC的扩展dll也有同样的问题
      

  2.   

    private:
    static CSystemInfo*_cSystemInfo;  //注意是成员变量CSystemInfo* CSystemInfo::GetInstance( )
    {
       (_cSystemInfo== NULL) ? _cSystemInfo= new CSystemInfo() : NULL;
       return _instance ;
    }这样应该可以的
      

  3.   

    private:
    static CSystemInfo*_cSystemInfo;  //注意是成员变量CSystemInfo* CSystemInfo::GetInstance( )
    {
       (_cSystemInfo== NULL) ? _cSystemInfo= new CSystemInfo() : NULL;
       return _cSystemInfo;
    }
      

  4.   

    晕,刚想把帖子删除,我哭1。我知道可以不理睬
    2。没有用阿,你new了以后谁来delete呢?析构?
    问题是析构将会在内存泄露报告之后才会执行。
      

  5.   

    static CSystemInfo cSystemInfo;
    new了吗?需要delete吗?
      

  6.   

    对阿~static CSystemInfo cSystemInfo;
    new了吗?需要delete吗?所以lz还是用个内存泄露检测工具看看吧,比如purify,它能帮你找到具体泄露的地方。