使用 shrink_to_fit() 释放向量向量中的内存
Posted
技术标签:
【中文标题】使用 shrink_to_fit() 释放向量向量中的内存【英文标题】:Using shrink_to_fit() for releasing memory in vector of vectors 【发布时间】:2020-02-09 09:12:25 【问题描述】:假设我有std::vector<std::vector<int>> a(n, std::vector<int>(n, x));
。
现在我想释放std::vector<std::vector<int>>
占用的所有内存。做就够了吗
a.clear();
a.shrink_to_fit();
还是我应该先对所有内部向量执行此操作?
【问题讨论】:
【参考方案1】:主要做这件事就足够了。因此,将调用 inside-vector 的析构函数,而不仅仅是将大小调整为 0。
为所有内部向量执行此操作 - 您只是在为他完成编译器的工作。
您也可以在一行中完成:a = ;
【讨论】:
这不是编译器的工作,而是析构函数。并且内部向量的析构函数无论如何都会运行,即使向量在被销毁之前被清除。从技术上讲,将大小调整为 0 (a.resize(0)
) 与 a.clear()
感谢您的回答。刚刚测试了a = ;
,好像没有释放内存,因为a.capacity();
显示了我的n
。
@АлексейБрагин 这可能是一些调试优化。它肯定会释放内存。以上是关于使用 shrink_to_fit() 释放向量向量中的内存的主要内容,如果未能解决你的问题,请参考以下文章