我的混合模式 MFC 应用程序正在创建错误的内存泄漏,因为在 MFC dll 关闭之前 CRT 没有时间关闭。
我有一个非常简单的小应用程序可以显示问题:
#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 派生类没有被清理。
这是预期的行为吗?我想让我的应用程序完全关闭。
谢谢,