セットを反復処理すると、セグメンテーションフォルトが発生します。 STDで 0x000000081193ccc5にスタックトレースポイント:: _ Rb_tree_increment stl_tree.hでのstd :: _ Rb_tree_const_iterator ::演算子++で/libstdc++/src/tree.cc:68 0x0000000806c3107eで(__X = 0x1の):266std :: _ Rb_tree_increment(__x = 0x1)からのセグメンテーションフォールト
けどもっと有益な情報は得られませんが、クラッシュの最終行は以下の通りです。イテレーターはセットを超えています。
typedef std::set<test*,test_less> test_set_t;
test_set_t& set(bt->getSet()); // getSet() will return reference to the class bt member variable set
test_set_t::iterator pos = set.begin();
test empty(val);
test* last_ptr = ∅
for (; pos != set.end(); last_ptr = *pos++) { // gdb shows this as last line
私は問題を見ることができません。前もって感謝します。
ループ内に何があるのかを表示してください。その中に何かが原因で障害が発生している可能性があります(ただし、あなたが言及した行だけで認識されます)。 –
完全な最小テストケースは、あなたがUBをどこかで呼び出しているように見えるので、UBの症状はどこにでも現れることがありますので、実際のコードを提示するのはまともな方法です構造化された方法でものをデバッグする。 – PlasmaHH