C++程序的生前死后(CRT Startup code)
一、读前带入的问题
1.C++进入点是main()吗?
2.什么代码比main()更早被执行?
3.什么代码在main()结束后才被执行?
4.为什么上述代码可以如此行为?
5.Heap的结构如何?
6.I/O的结构如何?
二、参考书籍
《程序员的自我修养——链接、装载与库》
三、什么是CRT Startup code
CRT Startup code:C Runtime Startup code。启动码函数。
任何C/C++程序在main函数之前有个启动码函数,main函数是在启动码函数里面调用,启动码函数是最早执行的函数
1.Startup code的位置(以window环境下vc6为例)
在window环境下的VC6中的CRT Startup code函数名为mainCRTStartup()。位于crt0.c文件中
call stack(调用栈)

KERNEL32! bff89f5b()…内核函数
mainCRTStartup() 启动码函数
四、Startup Code执行流程

1)内存初始化
2)IO初始化
3)4)5)6)字符串处理
7)c data 初始化
8)main
9)exit:C++程序执行完后的后处理
http://cxspace.org.cn/2024/01/05/C++程序的生前死后(CRT Startup code)/