转载自:http://shashanzhao.com/archives/791.html
首先为什么要快速强制退出应用程序.
1.想快点结束程序,关闭自己,节约时间
2.正常退出时(或者关闭窗口时)崩溃,出来一个对话框
“XXX已停止工作,Windows 正在检查该问题的解决方案…”,一时找不到原因解决,总不能关闭的时候老看见这个框吧.
3.写的代码是给自己用的,不严格,所以如果正常退出,会调用一大堆析构函数,可能又涉及到多线程,必崩溃,这时就不得不考虑用快速简单粗暴的方法了.
4.快速退出程序没有多少影响,系统会帮你回收所有东西,所以不用担心内存泄露等, 唯一的影响就是你可能来不及保存一些窗口的配置,文件来不及保存等等了.
转到正题,目前有以下几个函数可以快速退出程序.
exit(0) 调用全局或者静态对象的析构函数然后退出
ExitProcess(0) 调用全局或者静态对象的析构函数然后退出
abort() 不调用全局或者静态对象的析构函数,
但在Release下弹出”XXX已停止工作,Windows 正在检查该问题的解决方案…”,
在Debug下会弹出”Debug Error!…”,不好用
TerminateProcess(GetCurrentProcess(), 0) 不调用全局或者静态对象的析构函数,干净利落的退出,程序员的大爱啊
注:
以上函数都会退出程序,忽略局部对象的析构和后面的代码.
就是此函数不会返回,直到程序终止.
总结就是如果碰到关闭时出现崩溃就使用TerminateProcess(GetCurrentProcess(), 0)来退出,哈哈,顿时清爽了.
测试环境:
Window 7,VC(VS/Visual Stdio)2010