错误的 C 代码会导致蓝屏死机吗?
Can bad C code cause a Blue Screen of Death?
我是 c 语言的新程序员,最近从 python 调过来,但仍然喜欢用相当雄心勃勃的项目(比如国际象棋程序)挑战自己,并且发现我的计算机出现异常次数蓝屏死机,当我是 运行 程序时和不是程序时(诚然,试图将我的全部内存用作哈希 table 可能不是最好的主意)。
所以我的问题是,这些最有可能是由我糟糕的 C 代码引起的,还是更有可能是我 3 岁、过度劳累的笔记本电脑是罪魁祸首?
如果可能是代码,我应该避免做哪些大事以防止这种情况发生?
BSOD 通常包含一些关于其原因的信息。
它包含什么信息,以及它如何准确显示取决于 Windows 您 运行ning 的版本。
从这里的列表可以看出:
https://hetmanrecovery.com/recovery_news/bsod-errors
大多数 BSOD 错误来自设备/驱动程序/内核代码,而不是来自您的典型用户态程序。
也就是说,如果您的代码使用特别低的级别 windows API,则可能会触发 BSOD,尤其是如果您 运行 它具有管理员权限。
请注意,简单地填满内存会导致您的程序分配失败,并且可能是您的程序,但不会导致整个 OS 崩溃。
此外,windows does place limits 关于单个进程可以分配多少。
最后一点:
“3 年旧笔记本电脑”没有提供足够的信息来说明您的硬件,因为有不同级别的笔记本电脑可用,一些高端的 3 年旧笔记本电脑的性能仍然比中端更好昨天买的一级。
作为故障排除措施,我建议备份您的数据,对您的 OS 进行全新安装(也称为“格式化机器”),然后确保所有驱动程序都是最新的。
您可能还想尝试硬件诊断工具,例如 memtes86,检查存储上的 SMART 等。
假设您在普通“用户space”程序中所做的任何事情都不可能使整个计算机崩溃。其他地方也一定是错的。这里有一些可能性:
如果您让计算机长时间执行 CPU- 和 RAM 密集型工作,您可能会对硬件施加压力,以至于有轻微缺陷的组件出现故障。通常是 RAM、电源或冷却风扇出现故障。
确保您的电源符合您拥有的所有套件的额定值,运行同时。确保你有足够的气流来满足你产生的热量;检查灰尘堵塞的散热器和实际上没有旋转的风扇。如果您有多个 RAM 棒,一次取出一个,看看是否可以解决问题。
我 喜欢 告诉你如果你还没有纠错 RAM,但由于令人恼火的市场差异化原因,你必须更换主板和 CPU 也是如此。还是值得做的,长的运行,但是相当于换了整台电脑
您可能遇到了 OS 或驱动程序中的错误。最可能的罪魁祸首是 GPU 驱动程序,尤其是当您的程序执行任何图形化操作时。遗憾的是,您所能做的就是确保您已完全修补。
我是 c 语言的新程序员,最近从 python 调过来,但仍然喜欢用相当雄心勃勃的项目(比如国际象棋程序)挑战自己,并且发现我的计算机出现异常次数蓝屏死机,当我是 运行 程序时和不是程序时(诚然,试图将我的全部内存用作哈希 table 可能不是最好的主意)。
所以我的问题是,这些最有可能是由我糟糕的 C 代码引起的,还是更有可能是我 3 岁、过度劳累的笔记本电脑是罪魁祸首? 如果可能是代码,我应该避免做哪些大事以防止这种情况发生?
BSOD 通常包含一些关于其原因的信息。
它包含什么信息,以及它如何准确显示取决于 Windows 您 运行ning 的版本。
从这里的列表可以看出:
https://hetmanrecovery.com/recovery_news/bsod-errors
大多数 BSOD 错误来自设备/驱动程序/内核代码,而不是来自您的典型用户态程序。
也就是说,如果您的代码使用特别低的级别 windows API,则可能会触发 BSOD,尤其是如果您 运行 它具有管理员权限。
请注意,简单地填满内存会导致您的程序分配失败,并且可能是您的程序,但不会导致整个 OS 崩溃。
此外,windows does place limits 关于单个进程可以分配多少。
最后一点:
“3 年旧笔记本电脑”没有提供足够的信息来说明您的硬件,因为有不同级别的笔记本电脑可用,一些高端的 3 年旧笔记本电脑的性能仍然比中端更好昨天买的一级。
作为故障排除措施,我建议备份您的数据,对您的 OS 进行全新安装(也称为“格式化机器”),然后确保所有驱动程序都是最新的。
您可能还想尝试硬件诊断工具,例如 memtes86,检查存储上的 SMART 等。
假设您在普通“用户space”程序中所做的任何事情都不可能使整个计算机崩溃。其他地方也一定是错的。这里有一些可能性:
如果您让计算机长时间执行 CPU- 和 RAM 密集型工作,您可能会对硬件施加压力,以至于有轻微缺陷的组件出现故障。通常是 RAM、电源或冷却风扇出现故障。
确保您的电源符合您拥有的所有套件的额定值,运行同时。确保你有足够的气流来满足你产生的热量;检查灰尘堵塞的散热器和实际上没有旋转的风扇。如果您有多个 RAM 棒,一次取出一个,看看是否可以解决问题。
我 喜欢 告诉你如果你还没有纠错 RAM,但由于令人恼火的市场差异化原因,你必须更换主板和 CPU 也是如此。还是值得做的,长的运行,但是相当于换了整台电脑
您可能遇到了 OS 或驱动程序中的错误。最可能的罪魁祸首是 GPU 驱动程序,尤其是当您的程序执行任何图形化操作时。遗憾的是,您所能做的就是确保您已完全修补。