用户程序使用malloc申请的内存空间在什么范围_内存空间之栈与堆

No.1

进程的地址空间

现代的操作系统为应用程序提供了一个虚拟的内存空间。在32位的系统里,这个内存空间拥有4GB的寻址能力,Linux默认情况下将高地址的1GB空间分配给内核,用户使用剩下的3GB的内存空间称为“用户空间”,一般来讲,应用程序使用的内存空间有如下的“默认权限”:

  • :栈用于维护函数系统调用的上下文,离开了栈,函数调用就没法实现。

  • :堆是用来容纳应用程序动态分配的内存区域,当程序使用malloc或new分配内存时,得到的内存来自堆里。

  • 可执行文件映像:这里存储着可执行文件在内存里的映像,由装载器在装载时将可执行文件的内存读取或映射在这里。

  • 保留区:保留区并不是一个单一的内存区域,而是对内存中受到保护而禁止访问的内存区域的总称。例如:大多数操作系统里,极小的地址通常都是不允许访问的:如NULL。通常C语言将无效的指针赋值为0也是出于这个考虑。

No.2

栈在程序运行中具有举足轻重的位置,栈保存了一个函数调用所需要的维护信息,这常常被称为堆栈帧或活动记录。堆栈帧一般包括如下几方面内容:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值