一开始可能会有点懵,但是回想我们的代码,在main()函数之前一般会有哪些代码?

比如库的包含(#include …),比如一些宏定义,全局变量的定义,想到这儿大体就有点思路了。函数执行之前,我们需要进行一些相关资源的分配,才能保证函数能够运行起来。

main函数执行之前

具体来说:
1、初始化栈的指针
栈用于存储一些需要的局部变量或者其他数据
2、静态变量或者全局变量的初始化(data段
3、如果全局变量未初始化,如果是内置类型会执行默认初始化,数值型short,int,long等为0,bool为FALSE,指针为NULL,等等(bss段
4、一些非内置类型,会调用默认构造函数进行初始化
5、main()函数的参数压栈(int argc, char **argv)
6、可能还会有标准输入输出或者错误流的初始化

main函数执行之后

那么相应的,main()函数执行之后,也需要进行相应资源的释放,比如要销毁堆内存,以及流的关闭。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐