硬件故障(例如 RAM 损坏)能否在 C++ 程序中表现为非理性但一致的行为?
今天,我目睹了过去一年左右我一直在研究的一个程序的非常奇怪的行为。它是用 C++ 编写的,我使用的是 Visual Studio 2010。有两个莫名其妙的行为实例。
第一个涉及特定类的构造函数。在我进行了一些代码更改(在其他地方,而不是在构造函数中)并重建项目后,内存飙升至最大值并冻结了我的操作系统(类似于我一年前遇到的问题,这是由于优化,但这次优化被禁用) . 调试后,我意识到在构造函数中无法访问断点,这意味着没有生成任何代码。如果我在代码的其他地方的结构中添加了几个成员变量,构造函数又神奇地工作了。
第二个实例涉及方法 A 调用方法 B 并传递参数。调试时,传递的变量在传递给B之前是一个有效的字符串。一旦在B处,参数为空。系统重新启动使事情再次正常工作。
这让我觉得我的 RAM 可能有问题 - 重新启动后,程序可能会在内存的不同部分运行,因此不会遇到问题。我正在使用的机器过去确实遇到过几次蓝屏,但不是经常出现。运行 Windows 内存诊断工具并没有发现问题,但我仍然怀疑。
当您不知道为什么会发生时,很容易责怪环境,但我以前真的从未见过这样的事情。我只是想问一下,故障硬件影响这样的程序是否有意义。