内存在对象指针列表中泄漏

时间:2012-09-25 14:12:05

标签: c++ memory-leaks

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

 std::list<X*> xList;

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

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

现在valgrind说这里有内存泄漏。我假设这是因为我从不删除列表中的对象。

我以为我会这样做:

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

但这是最佳解决方案吗?

2 个答案:

答案 0 :(得分:6)

不,最好的解决方案是改为std::list<std::unique_ptr<X>>。现在,对象将在适当时删除自己,并且您不必关心它。当std::list被销毁时,它所拥有的X个对象也会被销毁。

答案 1 :(得分:2)

  

但这是最佳解决方案吗?

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