main函数执行前、后再执行的代码
2016-07-16 10:57
183 查看
一、main结束 不代表整个进程结束
(1)全局对象的构造函数会在main 函数之前执行,
全局对象的析构函数会在main函数之后执行;
用atexit注册的函数也会在main之后执行。
(2)一些全局变量、对象和静态变量、对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间、释放资源使用权等操作
(3)进程启动后,要执行一些初始化代码(如设置环境变量等),然后跳转到main执行。全局对象的构造也在main之前。
二、main()之后执行的代码,用atexit注册的函数也会在main之后执行
C++中,全局对象的构造函数会在main 函数之前执行。
在大多数的实现方式里,核心会运行专门的启动代码,启动代码会在启动main()之前完成所有的初始化工作,这其中当然包括了全局对象的初始化。这个所谓的启动代码就是Runtime函数库的Startup代码。
在程序执行时,系统会先调用Startup,完成函数库初始化、进程信息设立、I/O stream产生,以及对static对象的初始化等动作。然后Startup调用main()函数,把控制权交给main()函数。main()函数执行完毕,控制权交回给Startup,进行反初始化动作。
(1)全局对象的构造函数会在main 函数之前执行,
全局对象的析构函数会在main函数之后执行;
用atexit注册的函数也会在main之后执行。
(2)一些全局变量、对象和静态变量、对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间、释放资源使用权等操作
(3)进程启动后,要执行一些初始化代码(如设置环境变量等),然后跳转到main执行。全局对象的构造也在main之前。
二、main()之后执行的代码,用atexit注册的函数也会在main之后执行
C++中,全局对象的构造函数会在main 函数之前执行。
在大多数的实现方式里,核心会运行专门的启动代码,启动代码会在启动main()之前完成所有的初始化工作,这其中当然包括了全局对象的初始化。这个所谓的启动代码就是Runtime函数库的Startup代码。
在程序执行时,系统会先调用Startup,完成函数库初始化、进程信息设立、I/O stream产生,以及对static对象的初始化等动作。然后Startup调用main()函数,把控制权交给main()函数。main()函数执行完毕,控制权交回给Startup,进行反初始化动作。
相关文章推荐
- C#简单多线程Demo
- PHP exec/system启动windows应用程序,执行.bat批处理,执行cmd命令
- TreeMap get获取数据为null
- C语言中strlen、strcpy、strncpy、strcat、strnact、strcmp、memcpy函数的实现
- [C#基础]c#中的BeginInvoke和EndEndInvoke
- php的<?php ?>标签匹配
- eclipse 中间的编辑代码区域显示与取消空格等特殊符号
- 关闭Cadence Orcad Capture CIS原理图弹出startpage页面的方法
- Python模拟用户提交订单
- 新人千万不要在 Windows 上使用 Ruby on Rails
- 基于qt实现十六进制收发
- BosonNLP试用
- 外贸支付接口集成,PHP Paypal插件英文 集成18家信用卡商家
- Eclipse中Ctrl+Alt+Down和Ctrl+Alt+Up不起作用
- spring+mybatis配置多数据源
- java -Xmx3550m -Xms3550m -Xmn2g -Xss128k
- 链式编程思想
- stl学习(一)优先队列
- Struts2的手工自定义验证--完整实例代码
- C语言转义字符实例详解