嵌入式與韌體
在沒有MMU的小型微控制器上,關於堆疊使用過量,應注意的事項下列何者正確?
- A堆疊會自動無限擴大,所以不必在意
- B堆疊溢位時,一定會顯示錯誤畫面
- C堆疊溢位也不會立刻被偵測到,可能悄悄破壞相鄰的資料,因此要避免深層遞迴或大型區域陣列,並估算使用量
查看答案與解析
正確答案:C. 堆疊溢位也不會立刻被偵測到,可能悄悄破壞相鄰的資料,因此要避免深層遞迴或大型區域陣列,並估算使用量
在個人電腦的OS中,可在堆疊前方放置禁止存取的分頁來偵測溢位,但在沒有MMU的微控制器上多半沒有這種機制,堆疊一旦溢位,就會悄悄覆寫其前方的變數等。症狀會出現在別的地方,使得很難找出原因。要避免深層遞迴與大型區域陣列,並以工具估算最大使用量,或在堆疊的末端寫入標記,檢查是否遭到破壞。
- A. 堆疊的大小有限。
- B. 並沒有在畫面上顯示的機制。
- C. 正確。容易成為原因難以判斷的缺陷。