Ubuntu 在递归 g++ 中冻结

Ubuntu 在递归 g++ 中冻结

我正在使用Ubuntu 14.04gcc version 4.8.2。有时当我运行一些C++有错误的代码时,例如Runtime Error,它会陷入困境recursion(我想……)并且我的整个计算机都会冻结。我什么也做不了。Ctrl+C, Ctr+Alt+F1..F7, Mouse,任何按钮都不起作用。甚至我的电源按钮。所以我必须按住它才能关闭我的电脑。这个 Ubuntu 或 gcc 错误让我很恼火!有人知道如何修复它吗?

我的编译行:g++ -O2 -Wall -pedantic -Wextra

g++版本:g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2

Ubuntu 版本:Ubuntu 14.04 LTS

我的两台电脑都出现了完全相同的情况。(我的电脑也是如此。我有 2 台ASUS电脑,我的电脑有DELL

答案1

我有时也会遇到同样的问题。这不是由递归本身引起的,而是由 Linux 内存不足引起的。Linux 允许程序分配所需的空间,直到内存完全用完为止。因此,您的机器无法处理原始操作。

Windows 的行为方式略有不同。它会留出一些可用空间以满足其需要。您的代码将出现“内存不足”错误,并且系统运行速度会稍微慢一些,但不会完全冻结。

攻击者也采用同样的思路fork-bomb,很快耗光系统所有内存,甚至导致killall系统无法运行。

如果您的程序占用了如此多的内存而不受控制,它很快就会死机,然后 Linux 就可以正常运行。目前唯一能让我加快速度的方法是发送Ctrl-C到启动代码或尝试运行代码的终端killall

相关内容