【发布时间】:2017-02-18 09:40:31
【问题描述】:
我有一个 MFC C++ 程序,它偶尔会无缘无故地在错误退出时崩溃。我的具体查询如下:
在我的 InitInstance() 重载中,有各种检查,以及设置事件和信号量等资源。当用户请求正常退出时,有一个 OnDestroy() 消息处理程序会关闭所有内容,包括释放资源等。该位工作正常。
当 InitInstance() 中的一项检查失败并且函数返回值 0(导致程序退出)时,就会出现问题。我的问题是:在那种情况下,是否会自动调用 OnDestroy() 来清理内容,还是我需要在退出 InitInstance 之前自己运行它?
【问题讨论】:
-
你为什么不问你的调试器呢?在
OnDestroy()中设置断点,看看会发生什么。此外,进程不会“无缘无故”崩溃。原因很明显,当您将调试器设置为中断时,会引发 Win32 异常。不要束手无策。 -
您的程序中有比主程序寿命更长的线程或互斥锁吗?它们应该在主退出后关闭,但是有一个 MSVC 错误需要手动修复。
-
@ark1974:当控制离开用户提供的入口点(它在 GUI 程序中称为
WinMain,而不是main)时,无论是否执行清理,这几乎是无关紧要的。该进程即将退出,操作系统无论如何都会回收所有资源。不确定您指的是哪个“bug”。
标签: c++ mfc crash intermittent