자원 획득과 객체 수명을 묶어 스코프를 벗어날 때 자동으로 해제되게 만듭니다.
SMART POINTERS
스마트 포인터는 소유권 규칙으로 delete 책임을 자동화한다
원시 포인터는 해제 시점을 사람이 기억해야 하지만, 스마트 포인터는 RAII를 이용해 스코프와 참조 관계에 따라 자원을 정리합니다.
unique_ptr한 객체를 한 소유자만 가진다. 복사는 안 되고 이동만
가능하다.
shared_ptr여러 소유자가 참조 카운트를 공유하고 마지막 소유자가
해제한다.
weak_ptr소유하지 않고 관찰만 해서 shared_ptr 순환 참조를 끊는다.
단독 소유 객체를 만들 때 권장되며 예외 안전성과 가독성을 함께 확보합니다.
공유 소유가 정말 필요할 때 사용합니다. 참조 카운트 비용과 수명 확장을 함께 고려해야 합니다.
소유권이 없는 관찰이나 C API 경계에서는 쓸 수 있지만 delete 책임을 섞지 않는 것이 중요합니다.
선택 기준
기본은 unique_ptr입니다. 공유 수명이 명확히 필요할 때만
shared_ptr로 넓히는 편이 안전합니다.
주의 기준
shared_ptr끼리 서로 잡고 있으면 참조 카운트가 0이 되지 않을 수
있으므로 weak_ptr로 순환을 끊습니다.