Смотрите мой код ниже:
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ГБ. В чем проблема?
Изменение размера не гарантирует освобождения основной памяти.
Вы должны попробовать с Уменьшать до размеров, что уменьшит емкость содержимого, чтобы соответствовать его размеру.
Я думаю, что функция стирания и / или очистки из векторного класса сделает это за вас.
Очень хорошая документация для вектора также на cpusplus.com