C++程序进入main函数之前,退出main函数之后会做些什么?
来源:互联网 发布:淘宝网能卖军用品 编辑:程序博客网 时间:2024/05/19 18:37
我们看下面的例子: /* file name test00.c */ int main(int argc, char* argv) { return 0; } 编译链接它: cc test00.c -o test.exe 会生成 test.exe 但是我们加上这个选项: -nostdlib (不链接标准库) cc test00.c -nostdlib -o test.exe 链接器会报错: undefined symbol: __start 也就是说: 1. 编译器缺省是找 __start 符号,而不是 main 2. __start 这个符号是程序的起始点 3. main 是被标准库调用的一个符号通常,我们会在编译器的环境中找到一个名字类似于 crt0.o 的文件,这个文件中包含了我们刚才所说的 __start 符号。那么真正的 crt0.s 是什么样子呢?下面我们给出部分伪代码: /////////////////////////////////////////////////////// section .text: __start: : init stack; init heap; open stdin; open stdout; open stderr; : push argv; push argc; call _main; (调用 main) : destory heap; close stdin; close stdout; close stderr; : call __exit; ////////////////////////////////////////////////////总结:main函数执行之前,主要就是初始化系统相关资源:1.设置栈指针2.初始化static静态和global全局变量,即data段的内容3.将未初始化部分的赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容4.运行全局构造器,估计是C++中构造函数之类的吧5.将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数main 函数之后会执行相反的工作。
0 0
- C++程序进入main函数之前,退出main函数之后会做些什么?
- C/C++在main函数之前和之后会做些什么
- 进入main函数之前做了什么?
- main函数之前 与 之后
- main函数之前、之后调用的函数
- 一个c程序在执行main函数之前和main之后都做了那些事情啊
- 程序在main函数之前做了什么
- iOS程序main函数之前发生了什么
- iOS程序main函数之前发生了什么
- iOS 程序 main 函数之前发生了什么
- iOS程序main函数之前发生了什么
- c语言中在main函数之前会执行什么
- 程序执行顺序,为何先执行main,在Main退出之后可否执行别的函数呢
- main函数之前都执行了什么?
- main函数之前究竟发生了什么?
- main函数之前做了什么?
- main函数之前做了什么?
- main函数之前究竟发生了什么?
- 门诊医生工作站处方类型的修改-----运维日志3
- 阿里巴巴2014研发工程师实习生面试经历
- C语言中预处理命令#define的用法
- 设计模式C++实现——工厂模式
- java版的无向图结构的存储及DFS操作
- C++程序进入main函数之前,退出main函数之后会做些什么?
- 出口变量增强- 截至到输入日期的本月累计
- CentOS各版本下载地址
- 顺序表
- Apache CloudStack 4.5.2 新特性一览
- 子父类出现后,类成员的特点(变量 、函数)
- 腾讯后台面试
- cocospod国外镜像源不能用
- ceph osd 更换硬盘记录