當前位置:編程學習大全網 - 源碼破解 - 堆棧是什麽意思

堆棧是什麽意思

堆棧是壹種運算受限的線性表。

棧(stack)又名堆棧,它是壹種運算受限的線性表。其限制是僅允許在表的壹端進行插入和刪除運算。這壹端被稱為棧頂,相對地,把另壹端稱為棧底。棧地址是指棧頂的地址。

當為局部變量分配棧內存時,系統就將局部變量存入到棧的某個內存塊中;當子函數運行結束局部變量應當被釋放時,系統再將這些存入局部變量的棧內存中的數據清除掉,恢復原來沒有被初始化的狀態。棧地址是指棧頂的地址。在Windows下,棧是向低地址擴展的數據結構,是壹塊連續的內存的區域。

棧和棧地址的特點

(1)棧經常與sp寄存器壹起工作,最初sp指向棧頂(棧的高地址),即棧地址。

(2)CPU用push指令來將數據壓棧,用pop指令來彈棧。當用push壓棧時,sp值減少(向低地址擴展)。當用pop彈棧時,sp值增大。存儲和獲取數據都是CPU寄存器的值。

(3)當函數被調用時,CPU使用特定的指令把當前的IP壓棧。即執行代碼的地址。CPU接下來將調用函數地址賦給IP,進行調用。當函數返回時,舊的IP被彈棧,CPU繼續去函數調用之前的代碼。

以上內容參考百度百科-棧地址

  • 上一篇:把馬賽克去掉的軟件
  • 下一篇:如何看待「壹時沖動」這樣的行為?
  • copyright 2024編程學習大全網