main函数之前做了什么

__attribute__((constructor)) void before()
{
    printf("this is main before\n");
}

__attribute__((destructor)) void after()
{
    printf("this is main after\n");
}
void main(int argc, char** argv)
{
    printf("this is main\n");
}

总结: main函数执行之前,主要就是初始化系统相关资源: 1.设置栈指针 2.初始化static静态和global全局变量,即data段的内容 3.将未初始化部分的赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容 4.运行全局构造器,估计是C++中构造函数之类的吧 5.将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数


posted @ 2021-03-02 09:05  唯一诺  阅读(594)  评论(0编辑  收藏  举报