1

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_ );
}
4

3 に答える 3

0

あなたの構文は次のようになるべきだと思います:

BOOST_FOREACH(shared_ptr<SUBCLASS> hoodSection , m_vecSections ){
   //do something
}
于 2012-11-13T08:44:30.577 に答える
0

m_vecSections内部から要素を追加または削除していBOOST_FOREACHますか?

は終了イテレータをキャッシュするため、未定義の動作につながる可能性がBOOST_FOREACHあります (そのため、ベクトルが変更されると無効になります)。http://www.boost.org/doc/libs/1_52_0/doc/html/foreach/pitfalls.htmlを参照してください。

于 2012-11-13T10:00:44.880 に答える
0

君たちありがとう

あなたはそれを見つける機会がなかった、このような呼び出し...

weak_ptr weakHood(shared_ptr(this));

m_vecSections を解放し、クラッシュを引き起こしました...

于 2012-11-13T10:17:26.733 に答える