BOOST_FOREACH在提升::shared_ptr上崩溃

BOOST_FOREACH crash on boost::shared_ptr?

本文关键字:shared ptr 崩溃 FOREACH BOOST      更新时间:2023-10-16

尝试在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_ );
}

我认为你的语法应该是:

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

您是否在BOOST_FOREACH内部添加或删除m_vecSections元素?

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

谢谢你们

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

weak_ptr弱胡德(shared_ptr(这));

释放了m_vecSections并导致了崩溃...