实验环境
Windows10
Vs2015
x86程序
启动函数
C/C++的运行时启动函数,该函数负责对C/C++运行库进行初始化。
启动函数的作用:
检索指向新进程的命令行指针、检索指向新进程的环境变量指针、全局变量初始化、内存初始化等。
当所有的初始化操作完成之后,启动函数会调用应用程序的进入点函数。
调试实战
我们写一个简单的main函数,然后F5进入调试。

mainCRTStartup()
这个函数调用了__scrt_common_main(),我们直接来看它。
__scrt_common_main()
发现这个函数主要在做,GS和SEH检查,这俩个检查主要是防止内存溢出的,想要了解的可以进一步了解一下。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DIZhl3mz-1634980724377)(C:\Users\11073\AppData\Roaming\Typora\typora-user-images\image-20211023170621872.png)]](https://i-blog.csdnimg.cn/blog_migrate/7b9afa158a309978ef82795aa2c729f0.png)
__scrt_common_main_seh()
这里代码比较多,直接贴出来

本文探讨了Windows环境下C/C++程序的启动过程,详细解析了从mainCRTStartup到invoke_main的调用链,涉及启动函数的角色、全局变量初始化、内存管理和安全检查。通过调试实战,展示了如何跟踪进入点并理解不同类型的入口函数,如main()和Winmain()的区别。
最低0.47元/天 解锁文章
1486

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



