atexit函式的作用

2021-05-22 08:14:17 字數 760 閱讀 1339

很多時候我們需要在程式退出的時候做一些諸如釋放資源的操作,但程式退出的方式有很多種,比如main()函式執行結束、在程式的某個地方用exit() 結束程式、使用者通過ctrl+c或ctrl+break操作來終止程式等等,因此需要有一種與程式退出方式無關的方法來進行程式退出時的必要處理。方法就是用atexit()函式來註冊程式正常終止時要被呼叫的函式。

atexit()函式的引數是乙個函式指標,函式指標指向乙個沒有引數也沒有返回值的函式。atexit()的函式原型是:int atexit (void (*)(void));

在乙個程式中最多可以用atexit()註冊32個處理函式,這些處理函式的呼叫順序與其註冊的順序相反,也即最先註冊的最後呼叫,最後註冊的最先呼叫。

#include

#include

void fun()

int main()

// int

atexit

(void (*func)()) // 見

中定義//

上面的**將輸出

hello

fun而把紅色的注釋**去掉之後,由於interpositioning行為,重定義了庫函式,使atexit僅僅表現為乙個普通的函式

因此輸出

fun

hello

附一道關於atexit函式的面試題目

main函式執行完畢後,是否可能會執行一段**?給出說明。

答案:如果需要加入一段在main退出後執行的**,可以使用atexit()函式註冊乙個函式,**如下:

atexit函式的用法

首先我們了解下atexit函式 函式名 atexit 標頭檔案 include 功 能 註冊終止函式 即main執行結束後呼叫的函式 原型 void atexit void func void 說明 atexit 用來設定乙個程式正常結束前呼叫的函式.當程式通過呼叫exit 或從main 中返回時,...

atexit函式詳解

對c語言有所了解的人都知道main函式是整個程式的入口,但是其實不然,在核心中可以使用鏈結器來設定程式的開始地方。當核心使 個exec函式執 c程式時,在調 main函式之前先調 個特殊的啟動例程,可執 程式將此例程指定為程式的起始位址。啟動例程從核心獲取命令 引數和環境變數,然後為調 main函式...

atexit 函式呼叫

函式名 atexit 標頭檔案 include 功 能 註冊終止函式 即main執行結束後呼叫的函式 用 法 int atexit void func void 按照iso c的規定,乙個程序可以登記多達32個函式,這些函式將由exit自動呼叫。atexit 註冊的函式型別應為不接受任何引數的voi...