Linux应用程序地址布局

来自国嵌2014嵌入式视频

程序构成

在学习Linux用程序开发时,经会遇到如下概念:代码段、数据段、BSS段(Block Started by Symbol,又名:未初始化数据段) 、堆(heap)和栈(stack)。而这些部分也是构成Linux用程序的重要组成部分。


当Linux应用程序在内存中运行的时候,程序是如何布局的?


代码段的地址是固定的,截图是有错误,应该是  0x08048000

 

通过测试程序的分析,得出以下结论:

数据存放

1.代码段:代码,全局常量(const)、字符串常量

2.数据段:全局变量(初始化以及未初始化的)、静态变量(全局的和局部的、初始化的以及未初始化的)

3.堆:动态分配的区域

4.栈:局部变量(初始化以及未初始化的,但不包含静态变量)、局部只读变量(const)

 

其中BSS段属于数据段的子段,存放全局的、静态的为初始化变量。

利用 readelf –S 程序名输出程序BSS断信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值