我正在编写一个小工具(VC 2010,无clr),使用第三方库执行一项简单任务(光栅化)。稍后这个工具将被更大的应用程序使用。有时,由于第三方库中的某些堆破坏,该工具会崩溃。虽然如此,但Windows(Vista/2008)会显示一个众所周知的对话框“程序已停止工作...关闭/调试程序。”这在我的情况下(服务器端)并不合适。该工具应该在没有任何可见影响的情况下默默地崩溃/终止。
为此,我安装了SEH以处理未处理的异常(SetUnhandledExceptionFilter)。对于诸如AV(*(PDWORD)0 = 0)之类的异常,处理程序完美地被调用,但由于某种原因,在堆破坏的情况下,处理程序没有被调用。破坏发生在其中一个第三方库dll的dllmain中,当它被卸载时。
几个问题。有人能解释为什么处理程序没有被调用吗?还有其他方法可以防止该对话框吗?
为此,我安装了SEH以处理未处理的异常(SetUnhandledExceptionFilter)。对于诸如AV(*(PDWORD)0 = 0)之类的异常,处理程序完美地被调用,但由于某种原因,在堆破坏的情况下,处理程序没有被调用。破坏发生在其中一个第三方库dll的dllmain中,当它被卸载时。
几个问题。有人能解释为什么处理程序没有被调用吗?还有其他方法可以防止该对话框吗?