2012-11-17 2 views
1

동적으로 boost :: python :: object 형식의 개체를 할당하는 것이 맞는지 궁금합니다. python :: boost :: object allocation

boost::python::object * obj = new boost::python::object();

어떤 문제가있을 것인가? 내부 참조 계산은 어떨까요?

감사합니다.

+0

참조 계산을 위해 std :: shared_ptr 또는 std :: unique_ptr을 사용하십시오. 덕분에 – jt234

답변

2

boost :: python :: object의 docs은 소멸자가 참조 횟수를 감소시키고 할당 연산자가이를 증가 시킨다는 것을 명시합니다. 명시 적으로 언급하지는 않았지만, 명시 자 및 Constructs an object managing a reference에 대한 이러한 명시 문에서 생성자가 참조 계수를 증가 시킨다는 것을 추론 할 수 있습니다.

new는 생성자를 호출하므로 소멸자가 호출되는지 확인하기 위해 delete가 호출되는 한 내부 참조 카운팅에는 아무런 문제가 없습니다.

참조 계산에 std :: shared_ptr 또는 std :: unique_ptr을 사용하는 것에 대한 설명은 다소 오해의 소지가 있습니다. std :: unique_ptr는 카운트를 참조하지 않지만 이동/할당 할당은 인스턴스 A에서 인스턴스 B로 인스턴스 A가 무효화되도록합니다. 또한 std :: shared_ptr은 boost :: python :: object가 유지하는 내부 참조 수를 수정하지 않고 boost :: python :: object 포인터의 수명에 대한 별도의 참조 카운트를 관리합니다.

+0

! 너의 anwser을 위해! – JLSM

관련 문제