繁体   English   中英

指向对象的指针列表中的内存泄漏

[英]Memory Leak in a list of pointers to objects

我有一个指向对象的指针列表。

 std::list<X*> xList;

我需要的只是列表的大小,因此我的方法将填充该列表并在其上调用size(),然后返回该大小。

注意:我知道这不是最好的解决方案,但是我使用的API提供了带有动态分配对象的列表,这是我唯一的方法。

现在,valgrind表示这里存在内存泄漏。 我认为这是因为我从不删除列表中的对象。

我以为我会这样做:

std::list<X*>::iterator iter;
for (iter = xList.begin(); iter != xList.end(); ++iter)
{
    delete (*iter);
}

但这是对此的最佳解决方案吗?

不,最好的解决方案是改为使用std::list<std::unique_ptr<X>> 现在,对象将在适当的时候删除它们自己,而您不必担心它。 std::list被销毁时,它所拥有的X对象也被销毁。

但这是对此的最佳解决方案吗?

不,最好的解决方案是改为使用std::list<std::shared_ptr<X> >

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM