温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言程序的内存空间布局

发布时间:2020-05-29 06:37:40 来源:网络 阅读:492 作者:Lee_1985 栏目:编程语言

C语言程序是编译后的二进制程序,其对目标操作系统依赖性非常强,如:Linux程序无法在Windows系统上直接运行,反之亦然,再如:64位程序无法允许在32位系统。对于C语言程序的内存存储空间的布局,还是需要了解一下的。

 C语言程序主要分为:正文段,初始化数据段,非初始化数据段,栈,堆等。

正文段:CPU执行机器指令的部分,该段是只读的。

初始化数据段:简称数据段,已初始化的变量(全局,静态局部变量)。

非初始化数据段:简称bss段,这段在二进制可执行文件中不存在,未初始化的(全局,静态变量)。

栈:局部变量,函数调用所保存的信息(如寄存器值)等都保存在栈中。

堆:动态分配的内存,如用malloc,realloc等申请的内存,使用后必须手动释放。

说明:

局部变量是在运行时创建的,他们并不进入a.out
数据段保存在目标文件中
BSS段不保存在目标文件中(除了记录BSS段在运行至所需要的大小)
文本段最容易受优化措施影响
a.out文件的大小受调试状态下变异的影响,但段不受影响
nm -sx a.out命令可查看a.out各段

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI