小编use*_*810的帖子

MFC项目中的虚假内存泄漏

我有一个MFC项目,即链接到第三方DLL.在程序退出时,IDE报告"检测到的内存泄漏!" 并倾倒泄漏.

这些泄漏来自第三方DLL.我很确定这些都被错误地报道了.(快速Google检查表明,在CRT销毁文件范围内的变量之前,MFC会检查内存泄漏.)

有没有办法禁用内存泄漏检查,只有该DLL?

回应到目前为止发布的答案

我不认为我滥用了API.我怀疑的行为可以用一个简单的项目来复制

  1. 使用VS2005
  2. 创建新的解决方案.
  3. 创建一个新项目(MFC应用程序.)
  4. 创建一个新项目(Windows 32项目,应用程序类型:DLL,导出符号)
  5. 在dll项目中,导出一个函数.
  6. 在dll项目中,按如下方式定义类Foo

这是代码

class foo
{
    public:
        foo(void)  { p = new int; };
        ~foo(void) { delete p; }
    private:
        int* p;
};
Run Code Online (Sandbox Code Playgroud)

在dll项目中,创建类foo的实例,在文件级别作用域.

foo g_foo;

// This is an example of an exported function.
TEMPDLL_API int exportedFunction(void)
{
    return 42;
}
Run Code Online (Sandbox Code Playgroud)

在MFC项目中,链接到库,并在InitInstance()中调用导出的函数

运行应用程序时,即使p被删除,也会在调用g_foo的析构函数时报告内存泄漏.

mfc memory-leaks

4
推荐指数
2
解决办法
2958
查看次数

标签 统计

memory-leaks ×1

mfc ×1