首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

八百里加急 迭代器是不是需要释放

2013-11-20 
八百里加急 迭代器是否需要释放?std::list UserRes* ::iterator pUserResfor( pUserRes pReq-m_UserR

八百里加急 迭代器是否需要释放?
std::list< UserRes* >::iterator pUserRes;

for( pUserRes =pReq->m_UserResList.begin();
     pUserRes !=pReq->m_UserResList.end();pUserRes++ )
{
   int a=(*pUserRes)->pszId;
}

问题 :这样用完后需要对 pUserRes 释放吗?
如 释放该考虑它为空吗? ?
[解决办法]
不需要释放,它自己会正确析构。
[解决办法]
lz肯能对迭代器的理解还是有些不清楚吧,其实可以这么形象的理解(具体实现的时候,肯定不是这样子的):容器是一种数组,迭代器是遍历数组的指针,就像int a[n]; for(int p = a; p != a+n; ++p) ;一样
[解决办法]
 不需要释放的!迭代器类似于指针,但是高于指针的!

[解决办法]
迭代器本身不需要,主楼 list 里面指针指向的资源倒是可能需要释放。
[解决办法]

引用:
Quote: 引用:

迭代器本身不需要,主楼 list 里面指针指向的资源倒是可能需要释放。

同意。可以先把UserRes*指针给shared_ptr管理,然后把shared_ptr对象放入容器里,释放问题就不用管了,都会自动释放的。


std::list<std::unique_ptr<>> 或者 boost::ptr_list<>

热点排行