其他分享
首页 > 其他分享> > c – 如何正确删除std :: list中的指针?

c – 如何正确删除std :: list中的指针?

作者:互联网

我正在通过new创建一个对象,然后在设置对象后将指针添加到std :: list.

删除指针和从列表中删除数据而不会导致内存泄漏的正确方法是什么?

解决方法:

我宁愿使用std :: find_if,而不是手动循环来搜索元素

auto it = std::find_if(lst.begin(), 
                       lst.end(), 
                       [&val](datalist const &d) { return d.index == val; });

if ( it != lst.end() )
{
    delete *it;
    lst.erase(it);
}

这并不是说你做错了.

但是,如果您考虑使用某种形式的智能点(例如std :: unique_ptr,std :: shared_ptr或boost的智能指针),您的代码将会得到改善,那么您就不必自己管理内存.

标签:c,list,pointers,delete-operator
来源: https://codeday.me/bug/20191007/1864552.html