用MFC的向导创建一MFC扩展DLL,但在程序中调用时,Debug调试总是跟踪到内存泄漏,
提示在DllMain中
    。。.
          。。..
    if (dwReason == DLL_PROCESS_ATTACH)
    {
             .
                    new CDynLinkLibrary(myDLL);//提示此处Memory leak 
    }
    else if (dwReason == DLL_PROCESS_DETACH)
    {
        。
                   AfxTermExtensionModule(myDLL);
    }
但这些代码全是向导生成的,我其他甚至什么都没做,调试提示new CDynLinkLibrary(myDLL);内存泄漏,但在程序退出时,AfxTermExtensionModule(myDLL)被调用,应该已经对其析构了呀,为什么BoundsCheck总提示内存泄漏,难道这是MFC的BUG??
经过我的进一步测试,一个问题更让我困惑,我在MFC扩展DLL内自定义一简单的扩展类,
//在mydll.h内
class AFX_EXT_CLASS ExtClass :public CObject
{
public:
    ExtClass();
    virtual ~ExtClass();public:
    int*    m_pValue;};//在mydll.cpp内
ExtClass::ExtClass()
{
    m_pValue = new int[1];
}ExtClass::~ExtClass()
{
    delete [] m_pValue;
}
ExtClass oneObject;//在动态库mydll内我定义了一模块内全局对象实体在应用程序中调用该mydll,debug调试时提示ExtClass构造函数内的m_pValue = new int[1]内存泄漏, 但跟踪代码运行,程序退出时ExtClass类的析构函数~ExtClass已经被调用,应该已经析构了呀;
如果取消掉那句在mydll.cpp内的动态连接库内定义的全局对象实体,而是改在我的应用程序的TestDll.cpp中定义该对象,就不会出现内存泄漏。
为什么在DLL内和在DLL外定义对象,一个会出现泄漏,一个不会呢?