欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

exit和atexit的區(qū)別詳細(xì)解析

 更新時(shí)間:2013年09月13日 08:49:35   作者:  
以下是對exit與atexit的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下

一、exit()函數(shù)
函數(shù)聲明:
void exit(int state);
exit()函數(shù)用于在程序運(yùn)行的過程中隨時(shí)結(jié)束程序,exit的參數(shù)state是返回給操作系統(tǒng),返回0表示程序正常結(jié)束,非0表示程序非正常結(jié)束。main函數(shù)結(jié)束時(shí)也會隱式地調(diào)用exit函數(shù)。exit函數(shù)運(yùn)行時(shí)首先會執(zhí)行由atexit()函數(shù)登記的函數(shù),然后會做一些自身的清理工作,同時(shí)刷新所有輸出流、關(guān)閉所有打開的流并且關(guān)閉通過標(biāo)準(zhǔn)I/O函數(shù)tmpfile()創(chuàng)建的臨時(shí)文件。

二、atexit()函數(shù)
函數(shù)聲明:
int atexit(void (*func)(void)); 
很多時(shí)候我們需要在程序退出的時(shí)候做一些諸如釋放資源的操作,但程序退出的方式有很多種,比如main()函數(shù)運(yùn)行結(jié)束、在程序的某個(gè)地方用exit()結(jié)束程序、用戶通過Ctrl+C或Ctrl+break操作來終止程序等等,因此需要有一種與程序退出方式無關(guān)的方法來進(jìn)行程序退出時(shí)的必要處理。方法就是用atexit()函數(shù)來注冊程序正常終止時(shí)要被調(diào)用的函數(shù)。

atexit()函數(shù)的參數(shù)是一個(gè)函數(shù)指針,函數(shù)指針指向一個(gè)沒有參數(shù)也沒有返回值的函數(shù)。atexit()的函數(shù)原型是:int atexit (void (*)(void));

在一個(gè)程序中最多可以用atexit()注冊32個(gè)處理函數(shù),這些處理函數(shù)的調(diào)用順序與其注冊的順序相反,也即最先注冊的最后調(diào)用,最后注冊的最先調(diào)用。

下面是一段代碼示例:

復(fù)制代碼 代碼如下:

#include <stdlib.h> // 使用atexit()函數(shù)所必須包含的頭文件stdlib.h
#include <iostream.h>

void terminateTest()
{
    cout<<"程序正在結(jié)束..."<<endl;
}

int main(void)
{
    // 注冊退出處理函數(shù)
    atexit(terminateTest);

    cout<<"the end of main()"<<endl;

    return 0;
}


程序的運(yùn)行結(jié)果為:
the end of main()
程序正在結(jié)束...

這些函數(shù)都是在main結(jié)束以后才被調(diào)用的。atexit只是注冊他們,使得他們在main結(jié)束以后被調(diào)用,看名字就可以看出來。

atexit這個(gè)玩意超有用,可以按照你予設(shè)的順序摧毀全局變量(類),例如有個(gè)log類,你在其它的全局類里也有可能調(diào)用到Log類寫日志。所以log類必須最后被析構(gòu)。假如沒有規(guī)定析構(gòu)順序,那么程序在退出時(shí)將有可能首先析構(gòu)log類,那么其它的全局類在此時(shí)將無法正確寫日志。
把數(shù)據(jù)寫回文件, 刪除臨時(shí)文件, 這才是真正有用的.

相關(guān)文章

  • C++編程歸并排序算法實(shí)現(xiàn)示例

    C++編程歸并排序算法實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了C++編程歸并排序算法實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11
  • C語言 將字符串逆序輸出的實(shí)例

    C語言 將字符串逆序輸出的實(shí)例

    這篇文章主要介紹了C語言將字符串逆序輸出的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • c++中stack、queue和vector的基本操作示例

    c++中stack、queue和vector的基本操作示例

    這篇文章主要給大家介紹了關(guān)于c++中stack、queue和vector基本操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • c++如何實(shí)現(xiàn)跳表(skiplist)

    c++如何實(shí)現(xiàn)跳表(skiplist)

    這篇文章主要介紹了c++如何實(shí)現(xiàn)跳表,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • COLORREF,COLOR,RGB,CString的轉(zhuǎn)化總結(jié)分析

    COLORREF,COLOR,RGB,CString的轉(zhuǎn)化總結(jié)分析

    實(shí)際的軟件開發(fā)過程中,常需要用到非.net平臺的代碼。這時(shí)候就可能碰到ColorRef(也就是以int類型代表的顏色值或是以DWORD值表示的顏色)。這跟.net平臺下的顏色的相互轉(zhuǎn)換MS并沒有直接實(shí)現(xiàn)
    2013-09-09
  • c語言實(shí)現(xiàn)整蠱朋友小程序(附源碼)

    c語言實(shí)現(xiàn)整蠱朋友小程序(附源碼)

    這篇文章主要給大家介紹了關(guān)于c語言實(shí)現(xiàn)整蠱朋友小程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C語言圖書管理系統(tǒng)實(shí)驗(yàn)

    C語言圖書管理系統(tǒng)實(shí)驗(yàn)

    這篇文章主要為大家詳細(xì)介紹了C語言圖書管理系統(tǒng)實(shí)驗(yàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Qt QFile文件操作的具體使用

    Qt QFile文件操作的具體使用

    很多應(yīng)用程序都需要具備操作文件的能力,Qt 框架提供了 QFile 類專門用來操作文件。本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-11-11
  • C語言編程C++柔性數(shù)組結(jié)構(gòu)示例講解

    C語言編程C++柔性數(shù)組結(jié)構(gòu)示例講解

    這篇文章主要介紹了C語言編程系列中的柔性數(shù)組,文中含有詳細(xì)的示例代碼講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • 詳解C++中的內(nèi)聯(lián)函數(shù)和函數(shù)重載

    詳解C++中的內(nèi)聯(lián)函數(shù)和函數(shù)重載

    這篇文章主要介紹了詳解C++中的內(nèi)聯(lián)函數(shù)和函數(shù)重載,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09

最新評論