ハードウェア障害 (RAM の破損など) は、C++ プログラムで不合理ではあるが一貫した動作として現れることがありますか?
今日、私は過去 1 年ほど取り組んできたプログラムの非常に奇妙な動作を目撃しました。これは C++ で書かれており、私は Visual Studio 2010 を使用しています。不可解な動作のインスタンスが 2 つあります。
1 つ目は、特定のクラスのコンストラクターに関するものでした。いくつかのコード変更 (コンストラクターではなく別の場所) を行い、プロジェクトを再構築した後、メモリが最大に急増し、OS がフリーズしました ( 1 年前に発生した最適化による問題と似ていますが、今回は最適化が無効になっていました)。 . デバッグ時に、コンストラクターでブレークポイントにアクセスできないことに気付きました。つまり、コードが生成されていませんでした。コードの別の場所にある構造体にいくつかのメンバー変数を追加すると、コンストラクターは魔法のように再び機能しました。
2 番目の例では、メソッド A がメソッド B を呼び出し、パラメーターを渡します。デバッグ時に、渡される変数は、B に渡される前は有効な文字列でした。B では、パラメーターは空でした。システムを再起動すると、正常に動作するようになりました。
これにより、RAM に問題がある可能性があると考えました。再起動後、プログラムはメモリの別の部分で実行される可能性があるため、問題は発生しません。私が取り組んでいるマシンでは、定期的ではありませんが、過去にいくつかのブルー スクリーンが発生しました。Windows メモリ診断ツールを実行しても問題は明らかになりませんでしたが、それでも疑わしいと思います。
何が起こっているのか見当もつかない場合、環境のせいにするのは簡単ですが、私はこれまでにこのようなことを見たことがありません. ハードウェアの誤動作がこのようなプログラムに影響を与えることに意味があるかどうかを尋ねたかっただけです.