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