2
ptr_set
からリリースされたオブジェクトが手動で削除されていない場合は、そのオブジェクトがリークしていると仮定しています。しかし、以下のテストプログラムでは、バググルンド(9/13行目)に2つのリークだけが表示され、12行目にはリークはありません。release
を誤解しましたか、何らかの理由でクリーンアップを管理していますか?ptr_container
ptr_containerが 'release'でリークする?
#include <iostream>
#include <boost/ptr_container/ptr_set.hpp>
typedef boost::ptr_set<int> SetInt;
int main() {
SetInt s;
new int(1); // leak, reported by valgrind
s.insert(new int(2));
s.insert(new int(3)); // leak? not reported by valgrind
s.insert(new int(4)); // leak, reported by valgrind
s.erase(s.begin());
s.release(s.begin()); // release '3'
SetInt::auto_type old_int1 = s.release(s.begin());
int *old_int2 = old_int1.release();
std::cout << '\'' << *old_int2 << "' has been released\n";
}
出力:3の
'4' has been released