回答編集履歴
1
記述の修正
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
決して「C言語が」強制終了させているわけではないことに注意。というのは、今回は初期化した値が確実に0だったのでOSが確実に検知できてキレイに強制終了になりましたが、そうでない場合もあるから。
|
24
24
|
|
25
|
-
C言語では「ローカル変数は意図的に初期化しない限り初期値不定(プログラムを実行してみるまで値が何になるか決まらない)」ということになっています。そういう条件下で生成したヘンな値を持ったポインタ、あるいは単に計算を間違えてヘンな値が入っていても同じことですが、これがたまたまOSから使用許可をもらっているアドレス値になっていて、そこにアクセスして他の
|
25
|
+
C言語では「ローカル変数は意図的に初期化しない限り初期値不定(プログラムを実行してみるまで値が何になるか決まらない)」ということになっています。そういう条件下で生成したヘンな値を持ったポインタ、あるいは単に計算を間違えてヘンな値が入っていても同じことですが、これがたまたまOSから使用許可をもらっているアドレス値になっていて、そこにアクセスして他のソースコード上ではなんの関わりもない他の変数等を書き換えてしまうことはあり得るわけです。
|
26
26
|
|
27
27
|
そうなると、
|
28
28
|
|