weaked_ptr.lock()을 했을 때, 포인터를 리턴하는 방법
프로그래밍 2013. 12. 17. 19:01
- shared_ptr이 생성되면, 레퍼런스 카운트로 사용 할 uses와 weaks 두 개의 값이 1로 세팅.
- weak_ptr에 shared_ptr을 대입하면,
weaks 값이 2로 증가되고, weak_ptr은 shared_ptr의 레퍼런스 카운터를 참조 - weak_ptr.lock()을 호출하면, uses 값이 0 이상인지를 체크하여 포인터를 리턴
현재는 uses > 0이므로, 유효한 포인터 리턴 - shared_ptr이 파괴되면, uses 값과 weaks 값이 감소한다. 이 때, uses값은 0이 된다.
- weak_ptr.lock()을 호출하면, uses 값이 0 이상인지를 체크하여 포인터를 리턴
현재는 uses == 0이므로, 널 포인터 리턴