組込み・ファームウェア
MMUを持たない小さなマイコンで、スタックの使いすぎについて注意すべきこととして正しいものはどれか。
- Aスタックは自動でいくらでも大きくなるので、気にしなくてよい
- Bスタックがあふれると、必ずエラーの画面が表示される
- Cスタックがあふれてもすぐには検出されず、隣のデータを黙って壊すことがあるので、深い再帰や大きな局所配列を避け、使用量を見積もる
答えと解説を見る
正解:C. スタックがあふれてもすぐには検出されず、隣のデータを黙って壊すことがあるので、深い再帰や大きな局所配列を避け、使用量を見積もる
パソコンのOSでは、スタックの先にアクセス禁止のページを置いてあふれを検出できますが、MMUのないマイコンではその仕組みがないことが多く、スタックがあふれるとその先にある変数などを黙って上書きします。症状は別の場所に現れるので原因を突き止めにくくなります。深い再帰や大きな局所配列を避け、ツールで最大の使用量を見積もったり、スタックの端に印を書いて壊れていないか調べたりします。
- A. スタックの大きさは限られています。
- B. 画面に表示される仕組みはありません。
- C. 正しい。原因の分かりにくい不具合になりがちです。