在我的课上,我有一个成员变量std :: vector< node *>孩子
以下类成员函数是否会创建内存泄漏?
//adds a child node { node* child = new node("blah","blah","blah"); child->Set_Parent(this); children.push_back(child); //<- Is this ok? }
向量制作指针的副本,我有两个指向同一内存的指针,
然后原始指针超出范围,对吧?
这可能很简单明了,但我想确认一下我的假设.
谢谢
解决方法
这不是泄漏……但是,如果向量超出范围,或者擦除,pop_back或执行从向量中删除元素的其他操作,而不首先删除要删除的元素,则手上会有泄漏.
正确的方法是使用向量< node *>进行更改. to vector< unique_ptr< node>>.您的代码将更改为
//adds a child node { node* child = new node("blah","blah"); child->Set_Parent(this); children.push_back(std::unique_ptr<node>(child)); }
或者使用boost :: ptr_vector< node>如果你可以使用Boost.