0

次の関数があるとします。

void foo(int x)
{
foo(x); 
}

私のマシン (i7) では、約 26 万回実行され、セグメンテーション エラーが発生します。なぜそれが起こるのですか?

4

2 に答える 2

7

関数を呼び出すたびに、ランタイムスタックにスペースが必要です。これは、その関数にローカルな変数にメモリが割り当てられる場所です。何が起こっているのかというと、何度も繰り返してスタックスペースが不足しているということです。つまり、スタックオーバーフローです。(このサイトの名前!)

参照: http: //en.wikipedia.org/wiki/Stack_overflow

于 2013-02-02T23:25:45.253 に答える