什麼是堆疊
最後放入的元素最先取出的後進先出(LIFO)資料結構。放入元素的操作稱為 push,取出的操作稱為 pop。用於管理函式呼叫的返回位址與區域變數(呼叫堆疊)、計算逆波蘭表示法的算式、深度優先搜尋等。
日文名稱: スタック
「堆疊」出現在8領域的34道練習題中(指令集與組合語言, 連結器與載入器與執行檔格式, 資料結構與演算法等)。
這個名詞所屬的領域: 資料結構與演算法
最後放入的元素最先取出的後進先出(LIFO)資料結構。放入元素的操作稱為 push,取出的操作稱為 pop。用於管理函式呼叫的返回位址與區域變數(呼叫堆疊)、計算逆波蘭表示法的算式、深度優先搜尋等。
日文名稱: スタック
「堆疊」出現在8領域的34道練習題中(指令集與組合語言, 連結器與載入器與執行檔格式, 資料結構與演算法等)。
這個名詞所屬的領域: 資料結構與演算法
ra會在每次呼叫函式的jal時被覆寫,所以呼叫其他函式的函式,必須一開始就將自己的返回位址保存到堆疊。
不呼叫其他函式的函式(葉函式、leaf function),在很多情況下不需要將ra保存到堆疊。下列何者是其理由?因此,呼叫其他函式的函式,規定要在序言將ra保存到堆疊,並在結尾還原。
在RISC-V中撰寫呼叫自己的遞迴函式時,若忘了將ra保存到堆疊,會發生什麼事?堆積朝位址大的方向延伸,堆疊朝位址小的方向延伸,因此中間的空閒區域不論是大量使用堆積的程式,或是大量使用堆疊的程式,都能運用。
將行程的堆積與堆疊配置成中間隔著寬廣的空閒區域、朝相反方向延伸,其優點為下列何者?堆疊有上限,其前方會放置禁止存取的保護分頁。
當遞迴過深而超過堆疊的上限時,在Linux等系統上一般會發生的事,下列何者正確?在個人電腦的OS中,可在堆疊前方放置禁止存取的分頁來偵測溢位,但在沒有MMU的微控制器上多半沒有這種機制,堆疊一旦溢位,就會悄悄覆寫其前方的變數等。
在沒有MMU的小型微控制器上,關於堆疊使用過量,應注意的事項下列何者正確?