C/C++ 您当前所在位置:首页 > C/C++ > 堆栈的说明
堆栈的说明
简介 我们知道不管寄存器还是内存都是用来存储一些数据的。打个比方,如果我需要临时存储一些数据,用完就丢弃。如果数据少,当然可以放在寄存器里,但如果很多呢,10个?20个?所以我们就用内存来存储这些数据。不仅如此,还得要能记录我存了多少数据,并且我要用数据你还能快速的找到它。于是前辈们就这样来设计内存能满足我们的需求。
我们知道不管寄存器还是内存都是用来存储一些数据的。打个比方,如果我需要临时存储一些数据,用完就丢弃。如果数据少,当然可以放在寄存器里,但如果很多呢,10个?20个?所以我们就用内存来存储这些数据。不仅如此,还得要能记录我存了多少数据,并且我要用数据你还能快速的找到它。于是前辈们就这样来设计内存能满足我们的需求。
使用两个寄存器,比如就叫bottom和top。寄存器bottom存一个地址,记录起始地址,寄存器top存一个地址,记录结束地址。当存入数据的时候,top向上减一格,如下图。
初始状态
存入一个数据1后的状态
这样的话我们就可以想存多少存多少。并且还知道一共存了多少,top和bottom有多少距离就有多少数据。
在windows分堆栈的时候是越往上越小,也就是从大的地址慢慢往小的分,所以我们要想找到1有两种办法,一是bottom减去偏移,一是top加上偏移,这样就又满足了快速找到数据的需求。
当我们用完后不要了怎么办?很简单,我们将top的值加上一个就行
这样就非常方便的将那个值丢弃了。
堆栈是由操作系统来维护,一般做开发的程序员是不用管的,如果你喜欢分析底层,逆向别人的软件什么,这个必须要知道。
上一篇: 关闭网站响应头中PHP版本信息
下一篇: 常用汇编指令(一)
点击排行
热门推荐
随机展示
站点信息
- 上线时间:2020年05月30日
- 网站程序:自建框架
- 博客模板:今夕何夕
- 文章统计:43篇文章
- 评论统计:0条评论
- 留言统计:0条留言
- 统计数据:百度统计