shared_ptr 순환 참조 구조
weak_ptr
A shared→B
A가 B를 강하게 소유합니다.
B shared→A
순환 소유로 count가 남습니다.
B weak→A
소유하지 않고 관찰만 합니다.
lock()
살아 있을 때만 shared_ptr로 승격합니다.
A→B
→
B→A
→
weak
→
lock
shared_ptr 순환 참조 기준
점검
순환 누수
외부 소유자가 사라져도 내부 strong count가 남습니다.
weak 관찰
참조 횟수를 올리지 않아 해제 경로를 막지 않습니다.
lock 확인
객체가 이미 사라졌을 수 있으므로 결과를 확인합니다.
소유자 결정
부모-자식 관계에서 수명 책임자를 먼저 정합니다.