スポンサーリンク

問題の解答・解説ページ

このページは解説の閲覧モードです。
実力試しをしたい方は、下のボタンからクイズに挑戦してください!

この問題をクイズ形式で解く
問題 No.1817
再帰呼び出しを用いたプログラムを実行した際、関数や手続きが自分自身を次々と呼び出すことで発生しうる、メモリ領域の枯渇を引き起こす代表的な現象はどれか。

【正解の解説】

スタックオーバーフロー

これは、関数を呼び出すたびに作業机の上にメモ用紙を積み上げていくようなものです。再帰の終わり(終了条件)を書き忘れると、無限にメモ用紙が積み上がり、ついには机が崩壊してしまいます。これがメモリ領域の枯渇を引き起こすスタックオーバーフローの本質です。

スポンサーリンク

【その他の選択肢の解説】

ヒープオーバーフロー

これはスタックオーバーフローと混同しやすいですが、ヒープ領域という別のメモリ管理場所で起こる問題です。再帰呼び出しで消費されるのは関数ごとのローカル変数が積まれるスタック領域であるため、このヒープ領域の枯渇とは原因が異なります。

デッドロック

これは日常で例えると、十字路で東西の車と南北の車が「お先にどうぞ」と譲り合い、誰も動けなくなっている渋滞のような状態です。メモリの容量不足で強制終了するスタックオーバーフローとは異なり、こちらは処理の膠着状態を指すため用語の意味が全く異なります。

ガベージコレクション

これは部屋が散劣してきたときに自動でお掃除ロボットがゴミを片付けてくれるような便利な機能です。再帰呼び出しでメモリが枯渇する問題とは逆に、メモリを効率的に管理して溢れを防ぐための仕組みであるため、現象としては正反対の意味になります。