C言語で作成されたプログラム全体で使用するスタックフレームのサイズが、確保したサイズ内に収まっていることを検証したい。各関数が使用するスタックフレームのサイズ情報に加え、必要となる情報はどれか。
最大スタック量は呼出しツリーの最深経路の合計で決まる
選択肢
- ア各関数が使用するレジスタの退避領域のサイズ
- イ各関数が使用するローカル変数のサイズ
- ウ各関数の呼出し関係(呼出しツリー)
- エグローバル変数の合計サイズ
正解と解説
正解:ウ 各関数の呼出し関係(呼出しツリー)
スタックの使用量は、実行中に同時に積み重なる関数のフレームの合計で決まる。したがって各関数のフレームサイズだけでは足りず、どの関数からどの関数が呼ばれるかという呼出しツリーが分かって初めて、最も深いパスの合計を求められる。最悪値はこの最大となる経路のフレームサイズ合計(割込みが入る場合はその分も加算)で見積もる。
選択肢ごとの解説
- アレジスタ退避領域は各関数のフレームサイズに含まれる要素であり、追加で必要な情報ではない。
- イローカル変数のサイズも各関数のフレームサイズの内訳にすぎない。
- ウ正解。呼出しツリーが分かれば最も深い経路の合計を計算できる。
- エグローバル変数は静的領域に置かれ、スタックの使用量には関係しない。
この問題は2回出題されています
- 2016年度 春期 午前II 問24この問題の代表ページ
- 2019年度 春期 午前II 問21(このページ)
同じ分野の他の問題
- プログラム言語Cで作成されたプログラム全体で使用するスタックフレームのサイズが、確保したサイズ内に収まっていることを検証…2022年度 秋期 午前II 問21
- 組込み機器を含めた、様々なハードウェアアーキテクチャに向けて、カスタムのLinuxディストリビューションを構築するための…2025年度 秋期 午前II 問8
- 優先度に基づくプリエンプティブスケジューリングのリアルタイムOSを使用した組込みシステムにおいて、入力装置及び出力装置に…2025年度 秋期 午前II 問6
- プロセスの切替えに関する記述のうち、ディスパッチャの説明として、適切なものはどれか。2024年度 秋期 午前II 問6
- スケジューリングアルゴリズムにおける、リソーススタベーションに関する記述として、適切なものはどれか。2023年度 秋期 午前II 問8
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。