假设我有一个 std::vector 结构。如果 vector 是 clear()'d,内存会发生什么?
std::vector<myStruct> vecs;
vecs.resize(10000);
vecs.clear();
内存会被释放,还是仍然作为可重用缓冲区附加到 vecs 变量?
最佳答案
内存仍然附着在 vector 上。这也不仅仅是可能的。这是必需的。特别是,如果您在调用 clear()
后再次向 vector 添加元素,则 vector 不得重新分配,直到您添加的元素数量超过其先前大小的 1000 个。
如果你想释放内存,通常是用一个空 vector 交换。 C++11 还添加了 shrink_to_fit
旨在更直接地提供大致相同功能的成员函数,但它是非绑定(bind)的(换句话说,它可能会释放额外的内存,但仍然不是真正需要这样做)。
关于c++ - 清除后是否释放了 std::vector 内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944886/