假设我有结构的一个std :: vector的。 如果向量是明确的()发生了什么记忆'D'
std::vector<myStruct> vecs;
vecs.resize(10000);
vecs.clear();
将所述存储器被释放,或仍连接到血管内皮细胞变量作为可重复使用的缓冲器?
假设我有结构的一个std :: vector的。 如果向量是明确的()发生了什么记忆'D'
std::vector<myStruct> vecs;
vecs.resize(10000);
vecs.clear();
将所述存储器被释放,或仍连接到血管内皮细胞变量作为可重复使用的缓冲器?
所述存储器保持附接至载体中。 如果你想释放它,通常是用空载体交换。 C ++ 11还增加了shrink_to_fit
一种旨在大致更直接提供同样的能力成员的功能,但它的不具约束力的(换句话说,它可能释放额外的内存,但仍没有真正要求这样做)。
Vector的内存不能保证被清除。 你不能安全地访问后明确的元素。 为了确保被释放斯科特迈尔斯内存建议这样做:
vector<myStruct>().swap( vecs );
Cplusplus.com具有以下就此说:
删除Vector所有元素,调用各自的析构函数,离开容器的大小为0。
矢量能力并没有改变,也没有重新分配发生因调用这个函数。 强制再分配的典型方法是使用交换:...
调用析构函数的对象,但内存保持分配。
不,内存没有释放。
在C ++ 11,则可以使用shrink_to_fit
方法力矢量以释放内存。
http://www.cplusplus.com/reference/vector/vector/