我刚刚遇到这个问题几天了。之前,我一直认为通过从main返回并单击关闭控制台窗口退出程序与结束程序的方式相同。
但是,我发现它们不同。由于我的程序打开了一个对象的相机。关闭控制台窗口不会破坏或清理对象。所以下次再次打开相机时出错
我只是需要确认这是否属实?
那为什么直到现在我才能看到问题?
答案 0 :(得分:1)
关闭正在运行的控制台应用程序将终止进程,而不是让您有机会获得任何清理代码。我想你可以挂钩一个Windows消息循环来捕获WM_CLOSE消息并进行适当的清理,但是在一天结束时,你就不应该杀死这个过程。
答案 1 :(得分:1)
在Windows中关闭控制台窗口会终止正在运行的程序(或正在运行的程序堆栈)。除非它为此事件注册了处理程序,否则它没有机会进行清理。如果您需要解决方案,请注册处理程序。
嗯,请查阅文档,等几秒钟......好的,查看SetConsoleCtrlHandler
。