令和4年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問21
【問題21】
プログラム言語Cで作成されたプログラム全体で使用するスタックフレームのサイズが、確保したサイズ内に収まっていることを検証したい。各関数が使用するスタックフレームのサイズ情報に加えて、必要となる情報はどれか。
【解説】
ア: 各関数が使用するレジスタの退避領域のサイズ
誤り。スタックフレームの構成要素の一つではありますが、全体の最大スタック使用量を評価するには関数の呼び出し構造が不可欠です。
イ: 各関数が使用するローカル変数のサイズ
誤り。ローカル変数もスタック使用量に含まれますが、それだけでは最大使用量を把握できません。
ウ: 各関数の呼び出し関係(呼び出しツリー)
正しい。スタック使用量は関数のネストによって積み上がるため、呼び出しツリーを知ることで最大スタックサイズを算出できます。
エ: グローバル変数の合計サイズ
誤り。グローバル変数はスタックではなく静的領域に格納され、スタックフレームとは無関係です。
【答え】
ウ: 各関数の呼び出し関係(呼び出しツリー)
出典:令和4年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問21