私たちが知っているように、Linux の世界では、ユーザー空間の無限再帰 "main()" は "セグメンテーション違反" メッセージを受け取りますが、これは実際にはスタック オーバーフローが原因です。(ちょうど次のコードのように)
#include <stdio.h>
void main(void)
{
main ();
}
実験と質問:
コードを次のように変更します。
#include <stdio.h>
int cnt = 0;
void main(void) {
printf("cnt %d\n", cnt++);
main();
}
テスト環境:
x86-64 Ubuntu、gcc-4.6
あなたの助けが必要です。事前に感謝します!
別の「cnt」値でセグメンテーション違反が発生する理由:
cnt: 523614
cnt: 523602
cnt: 523712
cnt: 523671