轉載自: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