2
ptr_set
에서 릴리스 된 객체가 수동으로 삭제되지 않으면 유출되었다고 가정합니다. 그러나 아래의 테스트 프로그램은 valgrind (9/13 줄부터)에서 누출 2 개만 표시하고 12 번째 줄에서는 누출이 없음을 나타냅니다. release
을 오해 했습니까? 아니면 ptr_container
을 정리하는 중입니까?'release'에서 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";
}
출력 :
3의 소멸자는 실제로 당신이 관찰하는 것처럼라고'4' has been released