轉(zhuǎn)載自:http://shashanzhao.com/archives/791.html
首先為什么要快速強制退出應(yīng)用程序.
1.想快點結(jié)束程序,關(guān)閉自己,節(jié)約時間
2.正常退出時(或者關(guān)閉窗口時)崩潰,出來一個對話框
“XXX已停止工作,Windows 正在檢查該問題的解決方案…”,一時找不到原因解決,總不能關(guān)閉的時候老看見這個框吧.
3.寫的代碼是給自己用的,不嚴(yán)格,所以如果正常退出,會調(diào)用一大堆析構(gòu)函數(shù),可能又涉及到多線程,必崩潰,這時就不得不考慮用快速簡單粗暴的方法了.
4.快速退出程序沒有多少影響,系統(tǒng)會幫你回收所有東西,所以不用擔(dān)心內(nèi)存泄露等, 唯一的影響就是你可能來不及保存一些窗口的配置,文件來不及保存等等了.
轉(zhuǎn)到正題,目前有以下幾個函數(shù)可以快速退出程序.
exit(0) 調(diào)用全局或者靜態(tài)對象的析構(gòu)函數(shù)然后退出
ExitProcess(0) 調(diào)用全局或者靜態(tài)對象的析構(gòu)函數(shù)然后退出
abort() 不調(diào)用全局或者靜態(tài)對象的析構(gòu)函數(shù),
但在Release下彈出”XXX已停止工作,Windows 正在檢查該問題的解決方案…”,
在Debug下會彈出”Debug Error!…”,不好用
TerminateProcess(GetCurrentProcess(), 0) 不調(diào)用全局或者靜態(tài)對象的析構(gòu)函數(shù),干凈利落的退出,程序員的大愛啊
注:
以上函數(shù)都會退出程序,忽略局部對象的析構(gòu)和后面的代碼.
就是此函數(shù)不會返回,直到程序終止.
總結(jié)就是如果碰到關(guān)閉時出現(xiàn)崩潰就使用TerminateProcess(GetCurrentProcess(), 0)來退出,哈哈,頓時清爽了.
測試環(huán)境:
Window 7,VC(VS/Visual Stdio)2010