我用 g++ 编译的 C++ 编写了最愚蠢的程序来测试我的操作系统:
int main()
{
while (true)
{
new int;
}
}
Run Code Online (Sandbox Code Playgroud)
出于纯粹的好奇,我想了解 Windows 将如何响应程序,无情地分配内存。我预计它会在某个时候崩溃,或者 Windows 会进行干预,并释放所有内存。令我惊讶的是,Windows 并没有让它运行,导致整个 PC 无法使用。任务管理器仍然可以显示一些更改,而我的 32 GB RAM 已完全使用,直到它冻结。那么,什么都行不通。我仍然可以使用鼠标,我可以每 20 或 30 秒左右移动一次鼠标,持续一帧。CTRL-C 不起作用,但我不知道它是否识别出我之前从任务管理器切换到命令行。当我注意到我的 SSD 被大量使用时(LED 一直亮着),我决定什么最适合我的硬盘:硬重置...这就引出了一个问题:
为什么Windows 10允许程序无限期地消耗所有资源并让它使PC完全无法使用?
人们会认为一个编写良好的操作系统 - Linux 会如何响应?- 将采取一些安全措施来防止程序消耗所有资源。我认识到可能存在完全有必要使用所有可用资源的用法,但它是否应该仅通过简单的malloc
(或在本例中new
)可用?或者只是我的系统有问题?
注意:我强烈建议不要执行上面的程序,因为它可能会导致严重崩溃。