Почему память не освобождается после вызова 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ГБ. В чем проблема?

1

Решение

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

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

2

Другие решения

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

0

По вопросам рекламы [email protected]