[英]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.