我正在實現一個庫的自定義迭代器,並且正在重載運算符++和 - 。 我的前綴運算符完美地工作,但我的郵政運營商導致內存泄漏。導致內存泄漏的C++ post運算符(s)
avl_iterator& operator++()
{
_node = utilities::next_node(_node);
return (*this);
}
avl_iterator& operator ++(int) {
avl_iterator temp(*this);
++(*this);
return(temp);
}
avl_iterator& operator --() {
_node = utilities::prev_node(_node);
return (*this);
}
avl_iterator& operator -- (int) {
avl_iterator temp(*this);
--(*this);
return(temp);
}
我知道這是因爲我返回一個臨時變量,但我似乎無法想象(或發現)這樣做的更好的方法。
應該返回temp的副本,我猜 – billz 2013-03-01 00:59:14
你正在返回一個超出範圍的東西的引用。這不會泄漏內存;它會導致未定義的行爲。 – chris 2013-03-01 00:59:51
Eek!您正在返回對基於堆棧的變量的引用。不好。 – 2013-03-01 01:00:26