bob*_*obo 1 c++ memory stl vector
当我调用vector<double>::clear()一些大尺寸的矢量时,我看不到内存在任务管理器/性能中返回到系统.
显然这是因为容器希望你再次使用相同的内存.一旦任务完成,我将不会再次使用该内存,并且内存将更好地返回到系统.
有没有一种方法,以确保立即内存返回到系统,比其他使用类似指针vector<double> * v/调用delete上v,当我们想要的记忆又回到了这个系统?
小智 11
C++ 11引入shrink_to_fit了应该这样做的方法(注意它并没有严格保证可以工作,但它很可能会这样):
your_vector.clear();
your_vector.shrink_to_fit();
Run Code Online (Sandbox Code Playgroud)
如果您不能使用C++ 11功能,那么您可以使用以下技巧,它将清除您的向量并释放它使用的所有内存:
std::vector<double>().swap(your_vector);
Run Code Online (Sandbox Code Playgroud)
也就是说,即使向量将释放它分配的任何内存,分配器也可能不会将内存返回给操作系统.但至少这个内存可用于您的应用程序的其他部分.
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |