【发布时间】:2012-09-25 14:12:04
【问题描述】:
我有一个指向对象的指针列表。
std::list<X*> xList;
我需要的只是列表的大小,所以我的方法填充这个列表并在其上调用 size() 然后返回大小。
注意:我知道这不是最好的解决方案,但我使用的 API 提供了一个包含动态分配对象的列表,这是我能做到的唯一方法。
现在 valgrind 说这里存在内存泄漏。我假设这是因为我从不删除列表中的对象。
我想我会这样做:
std::list<X*>::iterator iter;
for (iter = xList.begin(); iter != xList.end(); ++iter)
{
delete (*iter);
}
但这是最好的解决方案吗?
【问题讨论】:
-
使用智能指针会是更好的解决方案。
-
我认为您不能以这种方式删除元素(在使用该迭代器进行迭代时)。
-
@dbrank0: 删除迭代器引用的对象完全没问题。
-
如果您只需要尺寸,为什么还要填写列表?为什么不只计算您添加项目的次数?
-
如果您只需要大小,为什么要填充一个充满动态分配对象的列表?
标签: c++ memory-leaks