나는 수동으로 참조 카운트 된 구조체를 많이 사용하는 C++로 포팅하는 C 라이브러리가있다. 나는 참조 카운팅을 자동으로 처리하기 위해 shared_ptr
을 사용하는 것으로 생각했지만, C API를 유지하기를 원한다.C 인터페이스에서 shared_ptr 사용?
Object* object_create(void);
Object* object_retain(Object* o);
void object_release(Object* o);
내가 shared_ptr
를 사용하는 경우, 효과적으로 C API의 사용 설명서 참조 카운팅을 노출 할 수있는 방법이있다 : 오래된 서명은 다음과 같을?
명확히하기 위해; 당신은 shared_ptr이'object_create'에서 얻은 미처리 포인터를 감싸고, 해당 시점에'object_release'를 호출하게할까요? –
@OliCharlesworth 아니요, C++에서'Object'를 클래스 대신 (구조체 대신) 사용하고 있으며 C++ 코드에서'shared_ptr'을 사용하고 있습니다. 내가 shared_ptr에서 원시 포인터를 얻을 수 있다면 그것은 어쨌든 여전히 shared_ptr의 refcount와 함께 작동하게하는 것이 흥미 롭습니다. –
[Boost.intrusive_ptr] (http://www.boost.org/doc/libs/1_53_0/libs/smart_ptr/intrusive_ptr.html)을 사용하는 것이 더 나을 수도 있습니다. – Angew