나는 비슷한 것을 가지고있다 shared_ptr<Type> t(makeSomething(), mem_fun(&Type::deleteMe))
Type
에 대한 포인터가 필요한 C 스타일의 함수를 호출해야한다. shared_ptr
에서 어떻게 알 수 있습니까? - 그렇지 않으면 불량의 원인이 될 수 있습니다 라이브러리가 수행하려고 할 수 있기 때문에,shared_ptr에서 정상 ptr을 얻으시겠습니까?
boost::shared_ptr<foo> foo_ptr(new foo());
foo *raw_foo = foo_ptr.get();
c_library_function(raw_foo);
라이브러리 기능을 함께 수행하기 전에 shared_ptr
이 범위를 벗어나하지 않습니다 있는지 확인하십시오
c_library_function이 raw_foo로 작업을 수행하기 전에 shared_ptr이 범위를 벗어나는 것에 대해주의해야합니다. – falstro
roe : 그것에 대해 알고, 나는 단지에 대해 알 필요가 :). 감사합니다 아담! : D –
안녕하세요 @ 아담 Rosenfield,'c_library_function' 예외가 발생하는 시나리오에서 어떻게 설명 할 수 있습니다. raw_foo가 매달려 있다는 뜻입니까? 또는 foo_ptr이 raw_foo를 보유하고 있기 때문에 foo_ptr이 계속 진행되어 raw_foo를 삭제합니까? – thassan