見下面我的代碼:爲什麼在功能調用後內存不會釋放?
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;
}
我使用一段時間(1)循環到htop
工具檢查出的內存使用量,r可使用5GB RES
,但印刷load done
後,RES
仍然需要5GB。有什麼問題?
向量將內存返回給分配器,但分配器可能不會將它返回到操作系統,它不是必需的。 – sp2danny 2014-11-24 10:38:25
請不要將隨機標籤附加到您的問題。 [C]與此無關; 'std :: vector <>'完全不是C類型的。 – MSalters 2014-11-24 10:39:55