请参阅下面的代码:
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。问题是什么?
答案 0 :(得分:2)
调整大小并不能保证释放底层内存。
您应该尝试使用shrink_to_fit,这会降低内容的容量以适应其大小。
答案 1 :(得分:0)
我认为来自vector klass的擦除和/或清除函数会为你做到这一点。 矢量的非常好的文档也在cpusplus.com
上