【发布时间】:2012-09-08 19:28:15
【问题描述】:
在我的课堂上,我有一个成员变量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?
}
向量复制了指针,我有两个指向同一内存的指针, 然后原始指针超出范围,对吗?
这可能简单明了,但我想确认一下我的假设。
谢谢
【问题讨论】:
-
我建议你研究一下智能指针,比如
std::shared_ptr。 -
@JoachimPileborg:在这种情况下,您甚至可以使用
std::unique_ptr,因为std::vector支持移动语义。 -
如果节点总是应该有父节点,你可以让它成为构造函数的一部分。那么你只需要
children.push_back(new node("blah","blah","blah"), this); -
@ddriver 哦,鬼鬼祟祟!我会在构建根目录时传入 nullptr
标签: c++ pointers memory-leaks vector c++11