内存分配的一些心得

内存分配的一些心得
数据内存的主要位置:
.bss(Block Started by Symbol)   |内存低地址  
.data                           |           
.code(or .text)                 |   
.heap                           |

.stack                          |内存高地址

intel i386架构中,内存存放采用小端字节序来存放数据,所谓小端字节序是指低序字节低地址,高序字节高地址,高地址为数据增长方向。(小端字节序则相反

 BSS是Unix链接器产生的未初始化数据段(有的编译器会把未出世的数据初始化为0)或者初始化为0的数据段。其他的段分别是包含程序代码的“text”段和包含已初始化数据的“data”段。BSS段的变量只有名 称和大小却没有值。此名后来被许多文件格式使用,包括PE。“以符号开始的块”指的是编译器处理未初始化数据的地方。BSS节不包含任何数据,只是简单的 维护开始和结束的地址,以便内存区能在运行时被有效地清零。BSS节在应用程序的二进制映象文件中并不存在。
  在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域,一般在初始化时bss 段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。
  比如,在C语言之类的程序编译完成之后,已初始化的全局变量保存在.data 段中,未初始化的全局变量保存在.bss 段中。
  text和data段都在可执行文件中(在嵌入式系统里一般是固化在镜像文件中),由系统从可执行文件中加载;而bss段不在可执行文件中,由系统初始化。
    .data 保存的变量是可以被更改的,这与 .rodata(read-only data)不同,他存放的是只读的data
    .text包含了可执行程序的指令和指向内存区域的语句。一般而言,.text也是只读的。
                                                                       

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值