进程内存布局

段:每个进程所分配的虚拟内存,由很多部分组成(逻辑划分),称之为“段”

        文本段:程序机器语言指令,只读,可共享

        初始化数据段:显式初始化的全局变量,静态变量

        未初始化数据段BSS:未进行显式初始化的全局变量,静态变量(运行时分配,运行前分配为0或NULL)

        栈stack:由栈帧组成,局部变量,实参,函数返回地址&环境信息

        堆heap:动态分配

下图为linux典型内存空间地址分配

        栈指针:指向当前栈顶

        栈帧:栈以栈帧形式分配

        自动变量:实参&局部变量(调用函数时自动创建,返回时自动释放栈帧)

        函数调用信息:保存上层调用函数的状态(寄存器副本),以返回后能继续执行

        细节:1.栈驻留的内存顺序实际实现大多由高向下增长(朝堆的方向)

        2.函数返回时重置栈指针寄存器,使其指向前一帧末尾

        堆:一段长度可变的连续虚拟内存

        动态内存分配

        堆区起始位置:BSS后(&end)

        当前内存边界:program break

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值