gpt4 book ai didi

mfc - MFC 项目中的虚假内存泄漏

转载 作者:行者123 更新时间:2023-12-04 22:38:42 27 4
gpt4 key购买 nike

我有一个 MFC 项目,它链接到第三方 dll。在程序退出时,IDE 会报告“检测到内存泄漏!”并倾倒泄漏物。

这些泄漏来自第三方 dll。我很确定这些是错误的报道。 (Google 的快速检查表明 MFC 在 CRT 破坏文件范围内的变量之前检查内存泄漏。)

有没有办法禁用内存泄漏检查,只针对那个 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 的析构函数被调用时。

    最佳答案

    找到了我想要的。

  • 在项目属性对话框中,在链接器下 |输入
  • 将 dll 指定为延迟加载的 DLL。

  • 执行此操作后,Visual Studio 不再报告任何内存泄漏。

    关于mfc - MFC 项目中的虚假内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/628021/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com