Почему память не освобождается после вызова funciton?

Смотрите мой код ниже:

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 инструмент, г может использовать 5 ГБ RES, но после load done печатные, RES все еще беру 5ГБ. В чем проблема?

2 ответа

Изменение размера не гарантирует освобождения основной памяти.

Вы должны попробовать с shrink_to_fit, который уменьшит емкость содержимого, чтобы соответствовать его размеру.

Я думаю, что функция стирания и / или очистки из векторного класса сделает это за вас. Очень хорошая документация для вектора также на cpusplus.com

Другие вопросы по тегам