为什么函数调用后内存不释放



请参阅下面的代码:

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

相关内容

  • 没有找到相关文章

最新更新