我只想确认一下,对于一个指向该对象的向量中存在元素的情况下,删除已分配内存的正确方法是否如下:
vector<Fruit*> temp;
假设向量中的第六个元素指向我想要删除的对象。
Fruit* a = temp[5];
temp.erase(temp.begin()+5);
delete a;
这样对吗?谢谢
我只想确认一下,对于一个指向该对象的向量中存在元素的情况下,删除已分配内存的正确方法是否如下:
vector<Fruit*> temp;
假设向量中的第六个元素指向我想要删除的对象。
Fruit* a = temp[5];
temp.erase(temp.begin()+5);
delete a;
这样对吗?谢谢
delete temp[5];
temp.erase(temp.begin() + 5);
我想建议您考虑使用智能指针来解决问题。以下是一个示例:
std::vector<std::shared_ptr<Fruit>> v;
// add some elements
v.erase(temp.begin() + 5);
shared_ptr
的析构函数会删除它所拥有的对象或者减少引用计数,所以不存在内存泄漏的问题。如果没有共享所有权,可以使用unique_ptr
。boost::ptr_vector
也可能会很有用。unique_ptr
و¯”ن½؟用shared_ptr
و›´هگˆé€‚,ه› ن¸؛ن¸چ需è¦په…±ن؛«و‰€وœ‰وƒم€‚ - Jon Purdy
delete temp[5]; temp.erase(temp.begin() + 5);
。 - Kerrek SB