尝试在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_ );
}
答案 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并导致崩溃......