raw pointer bridge

get, reset, release는 소유권 책임이 서로 다르다

스마트 포인터에서 원시 포인터로 넘어갈 때는 누가 delete할지 다시 정해야 합니다. 특히 release는 자동 해제를 포기합니다.

get()
관리 중인 원시 포인터를 잠깐 빌립니다.
delete 금지
reset()
현재 객체를 해제하고 새 객체나 nullptr를 갖습니다.
소유권 유지
release()
unique_ptr가 소유권을 포기하고 원시 포인터를 넘깁니다.
수동 delete 필요
원칙: get()으로 받은 포인터는 절대 delete하지 않고, release()로 받은 포인터는 반드시 책임자를 정합니다.