栈是一个线性表,操作有限。
栈,也叫堆栈,是一种操作有限的线性表。限制是只允许在表的一端进行插入和删除。这一端称为栈顶,另一端称为栈底。栈地址是指栈顶的地址。
系统在为局部变量分配堆栈空间时,会将局部变量存储在堆栈上的特定内存块中。当子函数结束,局部变量即将释放时,系统会再次保存它们。局部变量堆栈中的数据被清除并返回到其原始的、未初始化的状态。栈地址是指栈顶的地址。在Windows中,堆栈是一种向低地址扩展的数据结构,代表内存的连续区域。
栈的特点和栈地址
(1)栈常与sp寄存器配合使用。最初,sp指向栈顶(栈的高地址)。
(2)CPU使用push指令将数据压入堆栈,使用pop指令打开堆栈。当使用push进栈时,sp值会减少(扩展到低地址)。当使用Pop弹出堆栈时,sp值增加。存储和检索数据都是CPU寄存器值。
(3)当函数被调用时,CPU使用特定指令将当前IP压入堆栈。也就是说,代码将被执行的地址。然后CPU将调用函数地址分配给IP并调用它。当函数返回时,旧的IP将从堆栈中弹出,CPU继续执行函数调用之前的代码。
以上内容可在-栈地址找到
上一篇:运行内存是ram还是rom
下一篇:内存和外存的特点和区别