迭代集合時出現分段錯誤。堆棧跟蹤點 0x000000081193ccc5中的std :: _ Rb_tree_increment(__X =爲0x1)在標準:: _ Rb_tree_const_iterator ::運算++ /libstdc++/src/tree.cc:68 0x0000000806c3107e在stl_tree.h:266來自std :: _ 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
我看不到問題。提前致謝。
請顯示循環體內的內容,因爲錯誤可能是由內存中的內容引起的(但只能通過您提到的行來識別)。 – 2012-01-27 14:31:39
一個完整的小型測試用例可以用來追蹤這個bug,因爲它看起來像是在某個地方調用UB,並且由於UB的症狀可以出現在任何地方,而不是在導致它的那一行,所以呈現真實代碼是唯一的理智方式以結構化的方式調試內容。 – PlasmaHH 2012-01-27 14:35:28