smart pointer

스마트 포인터는 “누가 객체를 파괴할지”를 타입으로 적는다

new/delete를 직접 맞추는 대신, 소유권 정책을 포인터 타입에 넣어 스코프가 끝날 때 자동으로 자원을 정리합니다.

unique_ptr

소유자는 하나뿐입니다. 복사는 막고 이동으로만 책임을 넘깁니다.

단독 소유권

shared_ptr

여러 객체가 함께 소유합니다. 마지막 소유자가 사라질 때 delete됩니다.

공유 소유권

weak_ptr

소유하지 않고 관찰합니다. 순환 참조를 끊고 lock으로 생존 여부를 확인합니다.

비소유 관찰
기본 선택: 소유자가 하나면 unique_ptr, 정말 함께 소유해야 할 때만 shared_ptr, 관찰은 weak_ptr입니다.