C语言程序的内存空间布局
C语言程序是编译后的二进制程序,其对目标操作系统依赖性非常强,如:Linux程序无法在Windows系统上直接运行,反之亦然,再如:64位程序无法允许在32位系统。对于C语言程序的内存存储空间的布局,还是需要了解一下的。
创新互联建站2013年至今,是专业互联网技术服务公司,拥有项目做网站、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元逊克做网站,已为上家服务,为逊克各地企业和个人服务,联系电话:18980820575
C语言程序主要分为:正文段,初始化数据段,非初始化数据段,栈,堆等。
正文段:CPU执行机器指令的部分,该段是只读的。
初始化数据段:简称数据段,已初始化的变量(全局,静态局部变量)。
非初始化数据段:简称bss段,这段在二进制可执行文件中不存在,未初始化的(全局,静态变量)。
栈:局部变量,函数调用所保存的信息(如寄存器值)等都保存在栈中。
堆:动态分配的内存,如用malloc,realloc等申请的内存,使用后必须手动释放。
说明:
局部变量是在运行时创建的,他们并不进入a.out
数据段保存在目标文件中
BSS段不保存在目标文件中(除了记录BSS段在运行至所需要的大小)
文本段最容易受优化措施影响
a.out文件的大小受调试状态下变异的影响,但段不受影响
nm -sx a.out命令可查看a.out各段
当前文章:C语言程序的内存空间布局
浏览路径:http://myzitong.com/article/ijgpss.html