質問: segmentation fault 11についてです。 変数を確認するために`printf`を入れてプログラムを書いていて発見したのですが、`printf`を使った場合このエラーが起こらないのにコメントアウトするとセグフォが起こるといった現象が起こります。 `printf`によってメモリの状況が変わるのでしょうか? なぜ`printf`によってそのような差が生まれるのかを教えていただきたいです。
回答: 勘違いしてはいけないのが、エラーが出ないからと言ってメモリアクセス違反がなくなった、というわけではないということです。 C言語というのは、実行時に時間のかかるエラーチェックは省略されてまして、実行時に出るエラーというのは、たまたまその異常動作によって検出されたものが出ているだけ、と思っておきましょう。 殆どのエラーは、エラーとしては表には出ません。 ということで、その動作は、たんにprintf命令が置かれているためにメモリ配置がビミョーに変わり、エラーとして検出されないようになっただけ、です。 繰り返しますが、エラーが出ないといって、プログラムバグが無くなった、とはなりません。