난 그냥 아래의 코드는 점에서 올바른지 눈의 신선한 쌍을하고 싶어 포인터 f, g, h.부스트 :: shared_ptr의 의미 (복사)
또한 trifoo의 생성자에서 shared_ptr 복사본의 결과는 무엇입니까? 이것은 shared_ptr을 공유하는 올바른 방법이며, 참조 카운트가 증가하는 것을 보장합니다. 다른 모든 의심은 검증을 테스트 할 수 있었지만 어떻게 확인할 수 있는지 잘 모르겠습니다. 어떤 비판도 환영합니다.
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/shared_ptr.hpp>
class foo {
int a, b;
public:
foo(int A, int B) : a(A), b(B) {}
};
typedef boost::shared_ptr<foo> foo_ptr;
class trifoo {
foo_ptr c, d, e;
public:
trifoo(const foo_ptr& C, const foo_ptr& D, const foo_ptr& E) : c(C), d(D), e(E) {}
};
int main() {
for (int i = 0; i < 5000000; i++) {
foo_ptr f(new foo(1,2));
foo_ptr g(new foo(2,3));
foo_ptr h(new foo(4,5));
boost::ptr_vector<trifoo> tris;
tris.push_back(new trifoo(f, g, h));
}
return 0;
}
참고 : 무의미한 루프는 메모리 누수를 테스트하는 것이었지만 그 중 아무 것도 발생하지 않았습니다.
나에게 잘 보이는. 하지만, 초기화를 위해 초기화 목록을 선호해야하고, 'tris' 벡터는 오직 하나의 요소만을 가질 것이고, 루프에서 빠져 나오기를 원할 것입니다. – GManNickG
간단히 말해 ptr_vector의 기능을 테스트하는 것이 었습니다.이 구현은 실용적인 응용 프로그램이 아닙니다. 감사합니다. – dcousens