while(true) 迭代耗尽 RAM 内存

问题描述 投票:0回答:2

我正在尝试解决这个问题: 我尝试运行这两个简单的代码

int main(void) {
    while(1) {
       printf("Do nothing\n");
    }
   return 0;
}

当我执行它时,我的内存 RAM 耗尽。 然后我尝试了这个变体:

int main(void) {
    while(1) {
       // do nothing
    }
   return 0;
}

在这种情况下,我的代码可以运行而不会耗尽 RAM。 我的问题是:为什么会发生这种情况?

printf
是否占用了内存或者我超载了
stdout
谢谢!

c heap-memory ram
2个回答
0
投票

如果终端内存不足,那么是的,终端没有正确清除标准输出。

如果是程序本身内存不足,那我其实也不知道。


0
投票

对于这样一个简单的程序,我看不出它本身会耗尽内存的任何原因。线索是一个程序正在输出到 stdout,而另一个则没有。

因此,似乎有什么东西正在缓冲程序的输出。终端历史缓冲区、IDE 缓冲区或类似的记录 stdout 的东西。

© www.soinside.com 2019 - 2024. All rights reserved.