C++ 程序启动 在进入main()前 会 调用两次 _initterm, 在 main() 结束后 还会调用 两次 _initterm
- 第一次 _initterm 初始化 C 环境(与多线程有关)
- 第二次 _initterm 创建 C++ 全局变量, 如果是自定义类型, 会 调用 atexit() 传入 全局对象的析构函数, 注: atexit 内维护的是 栈, 不是队列, 先传入的函数 会 后调用
- main() 执行
- 处理 atexit 中的函数
- 第三次 _initterm do pre terminators
- 第四次 _initterm do terminators
本文详细介绍了C++程序启动时的初始化流程,包括两次_initterm的调用及各自的功能;阐述了main()函数执行前后_initterm的具体作用,并解释了C++全局变量的创建与析构函数的调用顺序。
2万+

被折叠的 条评论
为什么被折叠?



