【发布时间】:2020-12-15 10:56:38
【问题描述】:
我的一个简单 CPP 文件占用了太多内存。有什么建议么?我使用 macbook air 2017 型号进行编码 代码是:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
std::vector<int> v;
int x = 0, y, i;
while (1) {
cin >> x;
if (x == 42) {
break;
}
v.push_back(x);
}
for (auto it = v.begin(); it != v.end(); it++) {
if (*it < 42) {
cout << *it << endl;
}
}
return 0;
}
【问题讨论】:
-
⟼通过采用indentation style 并一致地应用它,这段代码可以受益匪浅。缩进传达了结构和意图,使我们更容易理解您的代码,而无需花费大量时间来破译它,而且它还可以使错误更加明显,因为它们在视觉上很突出。
-
这个读数是什么?该文件是否包含值
42?你确定是这段代码导致了这个问题吗?这将继续无限制地分配内存,如果您输入一个没有值42的大文件,这可能会受到惩罚。 -
您的代码有 5 个左大括号
{,但有 6 个右大括号}。这真的是您构建程序的代码吗?它根本不应该编译。 -
显然输入文件的内容无效,无法读取
int值。输入流处于错误状态,因此不会读取数据并且代码永远不会遇到值42。最终结果是吃掉所有内存的不定式循环。 -
其他原因输入文件不包含值
42,您到达文件末尾,流进入错误状态和....不定式循环。