- 设置栈指针
- 初始化static静态和global全局变量,即data段的内容
- 将未初始化部分的全局变量赋予初始值:数值型short,int,long等0,bool等0FALSE,指针是NULL,等等.bss段的内容
- 全局对象初始化,构造函数在main之前调用
- 将main函数的参数,argc,将argv等传输到main函数,然后真正运行main函数
- main函数后将执行全局对象的分析函数;
- 可以用_onexit 在main注册一个函数 之后执行;
如下:
#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.