C語言return, exit, abort的區(qū)別
一般情況下,在C語言中退出一個程序用return,如果在main函數(shù)中,return在清理局部對象之后,會調(diào)用exit函數(shù)。
和return相比,exit并不會銷毀局部對象,而是會銷毀所有靜態(tài)與全局對象、清空緩沖區(qū),關(guān)閉IO通道。終止前則會調(diào)用atexit()所定義的函數(shù)。
atexit也在stdlib.h中,其聲明式為
int atexit(void (*func)(void))
當程序中止時,就會調(diào)用函數(shù)指針func。
//atexit.c
#include <stdio.h>
#include <stdlib.h>
void funcA (){
? ?printf("call from atexit\n");
}
int main (){
? ?atexit(funcA); ? //將funcA注冊為中止函數(shù)
? ?printf("exiting...\n");
? ?return 0;
}測試結(jié)果如下:
>gcc atexit.c
>a.exe
exiting...
call from atexit
如果希望什么都不做就退出程序,可以使用abort(),將abort();插入到return 0前面,則其輸出結(jié)果如下,并不會調(diào)用funcA。
>a.exe
exiting...
到此這篇關(guān)于C語言return, exit, abort的區(qū)別的文章就介紹到這了,更多相關(guān)C語言return, exit, abort區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于STL中l(wèi)ist容器的一些總結(jié)
list就是數(shù)據(jù)結(jié)構(gòu)中的雙向鏈表(根據(jù)sgi stl源代碼),因此它的內(nèi)存空間是不連續(xù)的,通過指針來進行數(shù)據(jù)的訪問,這個特點使得它的隨即存取變的非常沒有效率,因此它沒有提供[]操作符的重載2013-09-09
C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串)
這篇文章主要介紹了C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07

