我有一个MFC项目,即链接到第三方DLL.在程序退出时,IDE报告"检测到的内存泄漏!" 并倾倒泄漏.
这些泄漏来自第三方DLL.我很确定这些都被错误地报道了.(快速Google检查表明,在CRT销毁文件范围内的变量之前,MFC会检查内存泄漏.)
有没有办法禁用内存泄漏检查,只有该DLL?
回应到目前为止发布的答案
我不认为我滥用了API.我怀疑的行为可以用一个简单的项目来复制
这是代码
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的析构函数时报告内存泄漏.
找到了我想要的东西.
一旦我这样做,Visual Studio不再报告任何内存泄漏.