简单c++循环占用整个RAM

  • 本文关键字:RAM c++ 循环 简单 c++
  • 更新时间 :
  • 英文 :


我在c++上做了一些编码,只是为了习惯它的语法(我是Java开发人员)。然而,我写了下面的代码,它在几秒钟内占用了整个RAM,你拥有的空闲RAM越多,程序占用它的速度就越快。当我取消cout方法的注释以在每个循环结束时打印当前字符串时,它开始大幅降低RAM占用速度(每分钟10-15mb)。是印刷操作使周期变慢了那么多,还是有其他原因?

#include <iostream>
#include <list>
using namespace std;

int main() {
string inf;
list<string> myList;
for(;;){
inf += "___ ";
myList.push_back(inf);
//cout << inf;
}
}

for(;;)是一个无限循环。

for (statement 1; statement 2; statement 3) {
// code block to be executed
}

在执行代码块之前执行(一次)。

语句2定义执行代码块的条件。

声明3(每次)在代码块执行后执行。

由于语句2为空,默认值为true,因此循环继续运行。

发生这种情况的原因很简单,与追加列表相比,i/o操作确实很慢。因此,这似乎是工作"好"。这个循环是无限的,永不停止。

您的for(;;)循环是无限的,因此mylist不断扩展,直到它填充了整个RAM。将简单符号追加到列表中的执行时间非常短,因此RAM被填满的速度非常快。当cout添加到循环中时,循环必须先输出,然后才能添加更多的mylist。输出的执行时间比追加的执行时间长得多,因此循环之间的时间会变慢。这反过来意味着您的RAM将更慢地填充。

最新更新