使用std :: vector重新赋值的内存解除分配

Asl*_*986 6 c++ vector

假设我有VectorAVectorB两种std::vector<SameType>,两种initilized(我的意思是VectorA.size() > 0VectorB.size() > 0)

如果我做:

VectorA = VectorB;
Run Code Online (Sandbox Code Playgroud)

VectorA通常分配的内存是自动释放的?

Oli*_*rth 5

它被释放,因为所有包含的对象的析构函数都被调用,并且向量不再拥有内存.1

但实际上,它只是返回到分配器,它可能会或可能不会实际返回到操作系统.

只要在使用的分配器中没有错误,您就没有创建内存泄漏,如果这是您关心的问题.


1.正如@David在下面的评论中指出的那样,内存不一定要取消分配,具体取决于大小是否需要更改.