2
我假設從ptr_set
發佈的對象泄漏,如果它不是手動刪除。但是,下面的測試程序只顯示valgrind中的兩處泄漏(來自第9/13行),並且第12行沒有泄漏。我誤解了release
,或者是ptr_container
設法以某種方式進行清理?boost'ptr_container泄漏'釋放'?
#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";
}
輸出:
'4' has been released