c/c++面試精選題(十四)main 函數執行以前,還會執行什麼代碼?

main函數執行之前,主要就是初始化系統相關資源:

1.設置棧指針

2.初始化static靜態和global全局變量,即data段的內容

3.將未初始化部分的全局變量賦初值:數值型short,int,long等爲0,bool爲FALSE,指針爲NULL,等等,即.bss段的內容

4.運行全局構造器,估計是C++中構造函數之類的吧

5.將main函數的參數,argc,argv等傳遞給main函數,然後才真正運行main函數

(1)全局對象的析構函數會在main函數之後執行;

(2)可以用_onexit 註冊一個函數,它會在main 之後執行;

如果你需要加入一段在main退出後執行的代碼,可以使用atexit()函數,註冊一個函數。

相關文章