“堆栈”指的是什么?

发布网友 发布时间:2022-04-20 09:07

我来回答

1个回答

热心网友 时间:2023-10-03 03:18

堆栈是一种运算受限的线性表。

栈(stack)又名堆栈,它是一种运算受限的线性表。其*是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。栈地址是指栈顶的地址。

当为局部变量分配栈内存时,系统就将局部变量存入到栈的某个内存块中;当子函数运行结束局部变量应当被释放时,系统再将这些存入局部变量的栈内存中的数据清除掉,恢复原来没有被初始化的状态。栈地址是指栈顶的地址。在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。

栈和栈地址的特点

(1)栈经常与sp寄存器一起工作,最初sp指向栈顶(栈的高地址),即栈地址。

(2)CPU用push指令来将数据压栈,用pop指令来弹栈。当用push压栈时,sp值减少(向低地址扩展)。当用pop弹栈时,sp值增大。存储和获取数据都是CPU寄存器的值。

(3)当函数被调用时,CPU使用特定的指令把当前的IP压栈。即执行代码的地址。CPU接下来将调用函数地址赋给IP,进行调用。当函数返回时,旧的IP被弹栈,CPU继续去函数调用之前的代码。

以上内容参考百度百科-栈地址

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com