我正在尝试解决这个问题: 我尝试运行这两个简单的代码
int main(void) {
while(1) {
printf("Do nothing\n");
}
return 0;
}
当我执行它时,我的内存 RAM 耗尽。 然后我尝试了这个变体:
int main(void) {
while(1) {
// do nothing
}
return 0;
}
在这种情况下,我的代码可以运行而不会耗尽 RAM。 我的问题是:为什么会发生这种情况?
printf
是否占用了内存或者我超载了stdout
? 谢谢!
如果终端内存不足,那么是的,终端没有正确清除标准输出。
如果是程序本身内存不足,那我其实也不知道。
对于这样一个简单的程序,我看不出它本身会耗尽内存的任何原因。线索是一个程序正在输出到 stdout,而另一个则没有。
因此,似乎有什么东西正在缓冲程序的输出。终端历史缓冲区、IDE 缓冲区或类似的记录 stdout 的东西。