我读到,赋值方法在将任何东西分配给it.Does之前清除向量目标索引,这意味着如果我们有一个向量,如:
vector<foo*> somevector;然后分配方法在将数据复制到目标索引之前实际删除foo*。
发布于 2013-10-05 01:42:00
不是的。std::vector永远不会对存储的指针调用delete。它只会摧毁物体。对于具有非平凡析构函数的类对象,破坏包括调用该析构函数。对于指针,或任何其他微不足道的可销毁对象,破坏包括什么都不做。
发布于 2013-10-05 01:41:44
然后分配方法在将数据复制到目标索引之前实际删除foo*。
不,它只会删除指针本身(),而不会删除指向.的指针的对象。
在STL容器中使用原始指针时,需要小心。如果您在somevector中动态地分配元素,则您可以保存泄漏内存。
更多的实践方法是在STL容器中使用智能指针,在以下情况下,动态分配的内存将被取消分配:
std::vector<std::unique_ptr<foo>> somevector;发布于 2013-10-05 01:41:37
不,包含指向对象的指针的标准容器永远不会调用指针上的delete --如果/在必要时,您有责任这样做。这就是为什么存储指针是个坏主意。
https://stackoverflow.com/questions/19193087
复制相似问题