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가 예외 안전성과 간결성에 좋습니다.