堆棧是什麽意思
堆棧是壹種運算受限的線性表。
棧(stack)又名堆棧,它是壹種運算受限的線性表。其限制是僅允許在表的壹端進行插入和刪除運算。這壹端被稱為棧頂,相對地,把另壹端稱為棧底。棧地址是指棧頂的地址。
當為局部變量分配棧內存時,系統就將局部變量存入到棧的某個內存塊中;當子函數運行結束局部變量應當被釋放時,系統再將這些存入局部變量的棧內存中的數據清除掉,恢復原來沒有被初始化的狀態。棧地址是指棧頂的地址。在Windows下,棧是向低地址擴展的數據結構,是壹塊連續的內存的區域。
棧和棧地址的特點
(1)棧經常與sp寄存器壹起工作,最初sp指向棧頂(棧的高地址),即棧地址。
(2)CPU用push指令來將數據壓棧,用pop指令來彈棧。當用push壓棧時,sp值減少(向低地址擴展)。當用pop彈棧時,sp值增大。存儲和獲取數據都是CPU寄存器的值。
(3)當函數被調用時,CPU使用特定的指令把當前的IP壓棧。即執行代碼的地址。CPU接下來將調用函數地址賦給IP,進行調用。當函數返回時,舊的IP被彈棧,CPU繼續去函數調用之前的代碼。
以上內容參考百度百科-棧地址