回答編集履歴
1
タイプミスで余計な文字が入っていたのを除去
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
C や C++ の言語仕様としては確保してないメモリにアクセスにアクセスした場合の挙動は未定義です。 書き込みでも読み込みでもです。
|
20
20
|
|
21
|
-
C++ における「未定義動作」というのは非常に影響力が強く、
|
21
|
+
C++ における「未定義動作」というのは非常に影響力が強く、未定義動作としていることをやってしまったらコンパイラはどのような結果を生んでも良いことになっています。 しかも未定義動作をした箇所よりずっと後やずっと前に不可解な動作を引き起こしてもかまいません。 (俗に「タイムトラベル」と呼ばれることもある現象です。)
|
22
22
|
|
23
23
|
特に強力な最適化機構を持つコンパイラは未定義がどうなってもかまわないことを積極的に利用して考えられる中で最も速い処理を選ぶことがあります。 単に周辺のコードをまるごと除去することもありますし、容赦なくデタラメな動作に突入することもあります。
|
24
24
|
|