現象の概要 | NULL | 未初期化 | 範囲外 | 破棄 | 参照レベル | 型不一致 |
---|---|---|---|---|---|---|
他の変数が化ける(地雷) | なし | 希少 | 多 | 多 | 中 | 多 |
アクセス違反 | 確実 | 多 | 若干 | 中 | 中 | 少 |
管理情報破壊(地雷) | なし | 希少 | 多 | 希少 | 希少 | 中 |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> | void EndlessLoop(int n){ char a[1024*1024];//1MB EndlessLoop(n+1); } int main(void){ EndlessLoop(0);//この呼び出しは無限にスタックを消費させます。 //↓本来はこの位置に辿り着くことはなく、必ずスタックオーバーフローします。 //しかし最適化しすぎるコンパイラだとEndlessLoopを消してくる可能性もあるので一応。 puts("スタックオーバーフローを起こせませんでした"); getchar(); return 0; } |