在我的类中,我有一个成员变量std::vector<node*> children
下面的类成员函数会造成内存泄漏吗?
//adds a child node
{
node* child = new node("blah","blah","blah");
child->Set_Parent(this);
children.push_back(child); //<- Is this ok?
}
vector 复制了一个指针,我有两个指向同一内存的指针, 然后原始指针超出范围,对吗?
这可能简单明了,但我只想确认我的假设。
谢谢
最佳答案
这不是泄漏……还不是。但是,如果 vector
超出范围,或者你erase
, pop_back
或者做一些其他的事情从 vector 中删除元素,而不是先 delete
处理您要删除的元素,您的手上会漏水。
正确的方法是改变使用 vector<node *>
至 vector<unique_ptr<node>>
.您的代码将更改为
//adds a child node
{
node* child = new node("blah","blah","blah");
child->Set_Parent(this);
children.push_back(std::unique_ptr<node>(child));
}
或使用 boost::ptr_vector<node>
如果你可以使用 Boost。
关于c++ - 将指针 push_back 到指针 vector 中是内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12444723/