开始前和结束后都是可以执行其他代码的。
main函数开始前干的事情
1.设置栈指针
2.初始化static静态和global全局变量,即data段的内容
3.将未初始化部分的赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容
4.运行全局构造器,估计是C++中构造函数之类的吧
5.将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数
结束之后
执行 atexit
静态和全局对象析构函数
代码
class Base
{
public:
Base()
{
}
~Base()
{
}
};
Base b;
void exitFun()
{
}
void main()
{
// do sth....
atexit(exitFun);
}
以上程序运行顺序是,执行Base的构造,执行main,执行exitFun,执行Base的析构