在指针的对象列表内存泄漏(Memory Leak in a list of pointers to

2019-09-26 13:55发布

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

 std::list<X*> xList;

所有我需要的是列表,所以我的方法的大小,填充这个名单并在其上调用大小(),然后返回的大小。

注:我知道这是不是最好的解决办法,但我使用提供了动态分配对象名单,这是我能做到这一点的唯一方法的API。

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

我想我会做到这一点:

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

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

Answer 1:

不,最好的解决办法是有一个std::list<std::unique_ptr<X>>代替。 现在的对象会删除自己的,当它是适当的,你没有与它担心自己。 当std::list被破坏, X这都是由它拥有的对象也被破坏了。



Answer 2:

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

不,最好的解决办法是有一个std::list<std::shared_ptr<X> >代替。



文章来源: Memory Leak in a list of pointers to objects