在boost :: shared_ptr上BOOST_FOREACH崩溃?

时间:2012-11-13 08:36:33

标签: c++ boost

尝试在shared_ptr的向量上执行一个简单的操作并崩溃?我怀疑我做错了什么?

std::vector< shared_ptr<SUBCLASS> > m_vecSections;

shared_ptr<SUBCLASS> hoodSection;
BOOST_FOREACH(hoodSection, m_vecSections ){
   //do something
}

我在

中遇到了崩溃
 void add_ref_copy()
{
    atomic_increment( &use_count_ );
}

3 个答案:

答案 0 :(得分:0)

我认为你的语法应该是:

BOOST_FOREACH(shared_ptr<SUBCLASS> hoodSection , m_vecSections ){
   //do something
}

答案 1 :(得分:0)

您是在m_vecSections内添加或删除BOOST_FOREACH中的元素吗?

这可能导致未定义的行为,因为BOOST_FOREACH缓存了结束迭代器(因此如果向量被更改,它将变为无效)。见http://www.boost.org/doc/libs/1_52_0/doc/html/foreach/pitfalls.html

答案 2 :(得分:0)

谢谢你们

你没有机会找到它,这样的电话......

weak_ptr weakHood(shared_ptr(this));

发布了m_vecSections并导致崩溃......