我有一个指向对象的指针列表。
std::list<X*> xList;
我需要的只是列表的大小,所以我的方法,填充此列表并在其上调用size(),然后返回大小。
注意:我知道这不是最好的解决方案,但我使用的API提供了一个动态分配对象的列表,这是我能做到的唯一方法。
现在valgrind说这里有内存泄漏。我假设这是因为我从不删除列表中的对象。
我以为我会这样做:
std::list<X*>::iterator iter;
for (iter = xList.begin(); iter != xList.end(); ++iter)
{
delete (*iter);
}
但这是最佳解决方案吗?
答案 0 :(得分:6)
不,最好的解决方案是改为std::list<std::unique_ptr<X>>
。现在,对象将在适当时删除自己,并且您不必关心它。当std::list
被销毁时,它所拥有的X
个对象也会被销毁。
答案 1 :(得分:2)
但这是最佳解决方案吗?
不,最好的解决方案是改为std::list<std::shared_ptr<X> >
。