不整洁程序退出:MFC++; 我有一个MFC C++程序,它偶尔在错误出口上崩溃,没有明显的原因。我的具体查询如下:

不整洁程序退出:MFC++; 我有一个MFC C++程序,它偶尔在错误出口上崩溃,没有明显的原因。我的具体查询如下:,c++,mfc,crash,intermittent,C++,Mfc,Crash,Intermittent,在我的InitInstance()重载中,有各种检查,以及设置事件和信号量等资源。当用户请求正常退出时,会有一个OnDestroy()消息处理程序关闭所有内容,包括释放资源等。该位工作正常 当InitInstance()中的一个检查失败,并且函数返回值0(导致程序退出)时,就会出现问题。我的问题是:在这种情况下,是自动调用OnDestroy()来清理问题,还是在退出InitInstance之前我需要自己运行它?如果主窗口已经存在,您应该使用DestroyWindow在之前销毁它。不,当InitI

在我的InitInstance()重载中,有各种检查,以及设置事件和信号量等资源。当用户请求正常退出时,会有一个OnDestroy()消息处理程序关闭所有内容,包括释放资源等。该位工作正常


当InitInstance()中的一个检查失败,并且函数返回值0(导致程序退出)时,就会出现问题。我的问题是:在这种情况下,是自动调用OnDestroy()来清理问题,还是在退出InitInstance之前我需要自己运行它?

如果主窗口已经存在,您应该使用DestroyWindow在之前销毁它。不,当InitInstance以FALSE退出时,它不会自动销毁。ExistInstance已执行,但现有窗口将在应用程序退出时关闭


无论如何,当应用程序存在时,文件和内存等资源会被释放。

为什么不改用调试器呢?在
OnDestroy()
中设置一个断点,看看会发生什么。此外,进程不会“无缘无故”崩溃。当您将调试器设置为中断时,当引发Win32异常时,原因就显而易见了。不要束手无策。你的程序中有没有线程或互斥体比主程序更有效?它们应该在主程序退出后关闭,但有一个MSVC错误需要手动修复。@ark1974:当控件离开用户提供的入口点时(在GUI程序中称为
WinMain
,而不是
main
),无论是否执行清理,都与此无关。进程即将退出,操作系统将回收所有资源。不确定您指的是哪个“bug”。