栈stack的小知识

关于栈底、栈顶、高地址、低地址

如果是自己写入栈push和出栈pop程序时,地址的变化有我们所写的程序来定。当我们将写好的程序编译时,局部变量会被分配到栈中,此时的变量是从高地址向低地址分配,高地址是栈底,而低地址为栈底。


如图所示,入栈方向是从高地址向低地址,栈底是高地址,栈顶是低地址。但注意数据的存入仍遵循小尾模式,即高位数据存入高位地址,低位数据存入低位地址。
堆栈是内存中一块特定的区域,在DOS下是由自己编写决定,而在Windows下是有系统决定,系统一般会占据内存中的高地址位,如果stack的入栈方向是从低至高的话,如果栈溢出,会影响系统,所以入栈的方向是由高地址位向低地址位。
程序在运行时,自动变量和函数参数都会分配到stack中,在编译时,已将变量的偏移地址记住。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值