当前位置:  开发笔记 > 编程语言 > 正文

MFC项目中的虚假内存泄漏

如何解决《MFC项目中的虚假内存泄漏》经验,为你挑选了2个好方法。

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

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

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

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

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

    使用VS2005

    创建新的解决方案.

    创建一个新项目(MFC应用程序.)

    创建一个新项目(Windows 32项目,应用程序类型:DLL,导出符号)

    在dll项目中,导出一个函数.

    在dll项目中,按如下方式定义类Foo

这是代码

class foo
{
    public:
        foo(void)  { p = new int; };
        ~foo(void) { delete p; }
    private:
        int* p;
};

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

foo g_foo;

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

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

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



1> user75810..:

找到了我想要的东西.

在项目属性对话框中的"链接器"下 输入

将dll指定为Delay Loaded DLL.

一旦我这样做,Visual Studio不再报告任何内存泄漏.



2> Aaron Saarel..:

那些泄漏是合法的.我会仔细检查DLL文档,以确保您没有错过对特定于DLL的清理函数的调用.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有