Programming Place Plus トップページ – 用語集
コールスタックへのデータの追加が多すぎて、有効なメモリの範囲を超えてしまうことです。
スタックオーバーフローが起きると、実行時エラーになったり、ほかの用途で使われているメモリ領域を破壊したりといったように、正常に処理が続けられない状態に陥ります。
コールスタックはサブルーチン(関数やメソッドなども含む)の呼び出し時にデータがプッシュ(追加)され、サブルーチンから抜け出すときにデータがポップ(削除)されます。そのため、スタックオーバーフローは、サブルーチンの呼び出しの連鎖が長く続いたときに起こります。典型的なのは、非常に呼び出し回数が多くなる再帰呼び出しです。
再帰呼び出しを活用するアルゴリズムの中には、スタックオーバーフローを避けるために、再帰しないように変形したタイプが知られているものがあります。
たとえば、クイックソートには再帰版と非再帰版があります(アルゴリズムとデータ構造編【整列】第6章を参照)
Programming Place Plus のトップページへ