首页 > 解决方案 > 通过交换技巧立即释放内存(C++)

问题描述

我有一个非常大的向量,如下所示。

vector<vector<int>> a(100000, vector<int>(100000);
// do some work using a here
......

工作完成后,我使用

vector<vector<int>>().swap(a);

为了立即释放“a”使用的内存。我加

sleep(100)

交换后使用“top”命令查看内存使用是否立即减少。但我观察到什么都没有改变。这里会发生什么?

标签: c++gccoptimizationmemoryvector

解决方案


要立即从内存中清除矢量,您应该这样做:

v.clear();
v.shrink_to_fit();

推荐阅读