加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 将指针push_back到指针向量是否是内存泄漏?

发布时间:2020-12-16 04:53:49 所属栏目:百科 来源:网络整理
导读:在我的课上,我有一个成员变量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?} 向量制作指针的副
在我的课上,我有一个成员变量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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读