次の関数があるとします。
void foo(int x)
{
foo(x);
}
私のマシン (i7) では、約 26 万回実行され、セグメンテーション エラーが発生します。なぜそれが起こるのですか?
次の関数があるとします。
void foo(int x)
{
foo(x);
}
私のマシン (i7) では、約 26 万回実行され、セグメンテーション エラーが発生します。なぜそれが起こるのですか?
関数を呼び出すたびに、ランタイムスタックにスペースが必要です。これは、その関数にローカルな変数にメモリが割り当てられる場所です。何が起こっているのかというと、何度も繰り返してスタックスペースが不足しているということです。つまり、スタックオーバーフローです。(このサイトの名前!)
参照: http: //en.wikipedia.org/wiki/Stack_overflow