過去問解きまくり研究所 ホーム

平成31年度 春期 午前Ⅱ 問21

ソフトウェア開発管理技術

スタックに関する問題

C言語で作成されたプログラム全体で使用するスタックフレームのサイズが,確保したサイズ内に収まっていることを検証したい。各関数が使用するスタックフレームのサイズ情報に加え,必要となる情報はどれか。

答えと解説を見る

✓ これが正解ウ各関数の呼出し関係(呼出しツリー)

解説

同時に積まれるフレームの最大量は、呼出しツリーから求めます。

関数が呼び出されるたびに、その関数のスタックフレームがスタックに積まれ、戻ると取り除かれます。プログラム全体で一度に使うスタックの量は、同時に積まれているフレームの合計なので、どの関数がどの関数を呼ぶかという呼出し関係で決まります。各関数のフレームサイズが分かっていても、呼出しツリーを根から葉までたどり、経路ごとにフレームサイズを合計して最大となる経路を見つけないと、最大の使用量は求められません。レジスタの退避領域やローカル変数はフレームの内訳にすぎないので、追加で必要なのは関数どうしの関係の情報だという点で見分けます。

ほかの選択肢はなぜ違うのか

出典:平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問21

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)