C++ · MEMORY

스마트 포인터로 누수 예방하기

스마트 포인터는 new/delete 짝을 사람이 직접 기억하지 않도록 소유권을 객체에 묶어 스코프 종료 시 자동 정리를 돕습니다.

소유권 선택

smart ptr
unique_ptr하나의 소유자만 있고 이동으로 소유권을 넘깁니다.
shared_ptr여러 소유자가 참조 카운트로 생존을 공유합니다.
weak_ptr소유하지 않고 shared_ptr 순환을 끊는 관찰자 역할입니다.
scope exit마지막 소유자가 사라지면 자원이 해제됩니다.
단독 소유공유 소유비소유 참조자동 해제

주의점

ownership
기본 선택가능하면 unique_ptr을 먼저 고려합니다.
공유 비용shared_ptr은 카운트 관리 비용과 순환 위험이 있습니다.
raw pointer소유하지 않는 관찰 용도라면 raw pointer나 reference도 가능합니다.
make 함수make_unique, make_shared가 예외 안전성과 간결성에 좋습니다.