我的混合模式MFC应用程序创建虚假内存泄漏,因为CRT没有时间了MFC DLL被关闭之前关闭。
我有一个非常简单的小应用程序,显示问题:
#include <windows.h>
#include <iostream>
struct LongTimeToDestroy
{
~LongTimeToDestroy()
{
std::cout << "Will get called!" << std::endl;
Sleep(3000);
std::cout << "Won't get called!" << std::endl;
}
};
LongTimeToDestroy gJamsUpTheCRT;
int main()
{
}
与编译cl.exe /clr test.cpp
。 在运行时,您可以:
Will get called!
问题的症结是:之前,宣称任何静态/全局变量gJamsUpTheCRT
不会被释放。 例如,在我的情况下,MFC CWinApp派生类是没有清理。
这是预期的行为? 我想,让我的应用程序完全关闭。
谢谢,