请参阅下面的代码:
void foo() {
std::ifstream f("data");
string line;
vector<string> r;
while(getline(f, line)) {
r.push_back(line);
}
f.close();
r.resize(0);
}
int main(int argc, char *argv[])
{
foo();
cout << "load done" << endl;
while(1) {;}
return 0;
}
我使用 while(1) 循环来检查htop
工具中的内存使用情况,r 可能使用 5GB RES
,但打印load done
后,RES
仍然占用 5GB。怎么了?
调整大小并不能保证将释放基础内存。
您应该尝试使用 shrink_to_fit,这将减少所包含的容量以适应其大小。
我认为矢量klass的擦除和/或清除函数会为您做到这一点。一个非常好的矢量文档也在 cpusplus.com