Suppose I have VectorA
and VectorB
are two std::vector<SameType>
, both initilized (i mean VectorA.size() > 0
and VectorB.size() > 0
)
If I do:
VectorA = VectorB;
the memory previosly allocated for VectorA
is automatically freed?
它在调用所有包含对象的析构函数的意义上被释放,并且向量不再拥有内存。1
但实际上,它只是返回给分配器,它可能会或可能不会真正将它返回给操作系统。
只要正在使用的分配器中没有错误,您就没有造成内存泄漏,如果这是您所关心的。
一般来说,不一定。当您将一个向量分配给另一个向量时,后置条件是两个数组在操作结束时都将包含等效对象。
如果capacity
目标向量的min( v1.size(), v2.size() )
_ _ _在最后。在这种情况下,不会进行内存释放或分配。
如果目标向量没有足够的容量,那么它将创建一个具有足够容量的新缓冲区,并从源向量复制构造新缓冲区中的元素。然后它将交换新旧缓冲区,销毁所有旧对象并释放旧缓冲区。在这种情况下,旧对象被销毁,旧内存被释放,但这只是一种情况。