堆和栈的内存分配


栈的内存分配

栈是系统自动分配的一段内存区间,用户没法干预,栈的内存是从高地址到低地址的。

也就是说,先进栈的变量地址是高于后进栈的。

栈低是最高地址,栈顶是最低地址。

栈的空间较小,容易造成栈溢出。

 

栈上有几个指针,分别是:

bottom

栈的底端

top

目前栈上最大地址

guard size

栈的安全地址段,为了防止栈溢出导致访问其他程序的栈空间而创建的安全区间。

 

那么根据这两个变量,能得出如下结论

目前栈的使用空间=top - bottom

guard<=top<=bottom

 

 

 

堆的内存分配

堆是用户自己申请,并自己负责释放的一段内存区间,如果用户没有手工释放,则在程序结束的时候由操作系统负责释放。

堆的内存地址是从低地址到高地址的。也就是说,先申请的地址是小于后申请的地址的。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值