c++ - 通过交换技巧立即释放内存(C++)
问题描述
我有一个非常大的向量,如下所示。
vector<vector<int>> a(100000, vector<int>(100000);
// do some work using a here
......
工作完成后,我使用
vector<vector<int>>().swap(a);
为了立即释放“a”使用的内存。我加
sleep(100)
交换后使用“top”命令查看内存使用是否立即减少。但我观察到什么都没有改变。这里会发生什么?
解决方案
要立即从内存中清除矢量,您应该这样做:
v.clear();
v.shrink_to_fit();