C/C++ abort() 和 exit () 的區別 stdlib中的函數

abort() 和 exit () 的區別

如題所示, 這兩個函數有什麼區別 ? 它們的適用場合是什麼?

-----------------------------------------------
exit和abort都是用來終止程序的函數,都是存在於stdlib中的函數,他們的不同如下:

exit會做一些釋放工作:釋放所有的靜態的全局的對象,緩存,關掉所有的I/O通道,然後終止程序。如果有函數通過atexit來註冊,還會調用註冊的函數。不過,如果atexit函數扔出異常的話,就會直接調用terminate。

abort:立刻terminate程序,沒有任何清理工作。
-----------------------------------------------
補充一下,如果是用c++的話,exit調用的時候,對象還是不會被正確析構的,所以在exit前一定要釋放應該釋放的資源,特別內核駐留的像共享內存之類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章