棧幀

C語言中,每個棧幀對應著一個未運行完的函式。棧幀中保存了該函式的返回地址和局部變數。

基本介紹

  • 中文名:棧幀
  • 外文名:Stack Frame
  • 又名:棧幀也叫過程活動記錄
  • C語言:棧幀就是一個函式執行的環境:
  • 注意:而不是系統棧的底部。
概論,C語言,

概論

棧幀也叫過程活動記錄,是編譯器用來實現過程/函式調用的一種數據結構。

C語言

從邏輯上講,棧幀就是一個函式執行的環境:函式參數、函式的局部變數、函式執行完後返回到哪裡等等。
實現上有硬體方式和軟體方式(有些體系不支持硬體棧)
首先應該明白,棧是從高地址向低地址延伸的。每個函式的每次調用,都有它自己獨立的一個棧幀,這個棧幀中維持著所需要的各種信息。暫存器ebp指向當前的棧幀的底部(高地址),暫存器esp指向當前的棧幀的頂部(低地址)。
注意:EBP指向當前位於系統棧最上邊一個棧幀的底部,而不是系統棧的底部。嚴格說來,“棧幀底部”和“棧底”是不同的概念;ESP所指的棧幀頂部和系統棧的頂部是同一個位置。

相關詞條

熱門詞條

聯絡我們