2)main函數在執行前和執行后有哪些操作


main函數執行之前,主要就是 初始化系統相關資源
     1. 設置棧指針
     2. 初始化static靜態和global全局變量,即data段的內容
     3. 將未初始化部分的全局變量賦初值:數值型short,int,long等為0,bool為FALSE,指針為NULL,等等,即.bss段的內容     
     4. 全局對象初始化,在main之前調用構造函數
     5. 將main函數的參數,argc,argv等傳遞給main函數,然后才真正運行main函數

main函數執行之后:
     1. 全局對象的析構函數會在main函數之后執行; 
     2. 可以用_onexit 注冊一個函數,它會在main 之后執行; 

如果你需要加入一段在main退出后執行的代碼,可以使用onexit()函數,注冊一個函數。 
 
        #include <stdlib.h>
        #include 
<stdio.h>
    
        
int atexit(void (*function")(void));
        
void fn1( void ), fn2( void ), fn3( void );
                         
        
int main( void ){
            onexit( fn1 );
            onexit( fn2 );
            
printf"This is executed first." );
        }
        
        
void fn1(){
            
printf" This is" );
        }
        
void fn2(){
            
printf" executed next." );
        }
結果:
This is executed first.
This is executed next. 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM