変数を確認するためにprintfを入れてプログラムを書いていて発見したのですが、printfを使った場合このエラーが起こらないのにコメントアウトするとセグフォが起こるといった現象が起こります。printfによってメモリの状況が変わるのでしょうか?なぜprintfによってそのような差が生まれるのかを教えていただきたいです。16:21s0rans0ran111タイトルは質問の内容が分かるよう具体的なものを付けるよう心がけてください。問題を再現できるよう簡単なサンプルコードがあると回答が付きやすくなります。できるので、必要に応じて見直してみてください。16:37これは簡単なサンプルを作るのが極めて困難な例だと思います。整形するだけでとても良い質問になるはずなんですけど。2:081ひとまず、質問文の内容にあうようなタイトルに書き換えてみました。気に入らない場合は編集してください。質問者はいつでも質問を編集できます。わかりやすいタイトルであるほど詳しい人が興味を持つ可能性が増え、回答も得られやすくなることを意識すると良いです。処理の際にメモリを使います。使い終わったメモリの内容は変わります。正しいプログラムは使い終わったメモリにアクセスしないので影響を受けないのですが誤ったプログラムは使い終わったメモリにアクセスして影響を受けることがあります。ならない値になっているだけのことです。ポインタ変数の扱いが間違っていて変なところにアクセスしているとか自動変数の初期化を忘れていて、たまたま入っている値が違うとかが原因としてよくあります。自動変数ですが、初期化していません。よって初期値は不定です。するかしないかで変わります。なったりならなかったりします。個の銅バッジとてもわかりやすく勉強になります。ありがとうございます。|0勘違いしてはいけないのが、エラーが出ないからと言ってメモリアクセス違反がなくなった、というわけではないということです。C言語というのは、実行時に時間のかかるエラーチェックは省略されてまして、実行時に出るエラーというのは、たまたまその異常動作によって検出されたものが出ているだけ、と思っておきましょう。殆どのエラーは、エラーとしては表には出ません。いうことで、その動作は、たんにprintf命令が置かれているためにメモリ配置がビミョーに変わり、エラーとして検出されないようになっただけ、です。繰り返しますが、エラーが出ないといって、プログラムバグが無くなった、とはなりません。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。faultが発生します0(C言語)全ての数値が被らなくなるまで乱数を生成して配列に格納する方法0fscanfが実行されません。原因0再帰関数を学んでいます。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。