c++ weak_ptr



weak_ptr은 다음과 같은 경우에 사용하면 유용하다.
- 어떠한 객체를 참조하되, 객체의 수명에 영향을 주고 싶지 않은 경우
- 그리고 매번 특정 객체의 ID로 컬렉션에서 검색하고 싶지 않을 경우
- 그러면서 dangling pointer의 잠재 위험성을 없애고 싶을 때
> [[TR1] weak_ptr](http://egloos.zum.com/sweeper/v/3059940)


weak_ptr은 하나 이상의 shared_ptr 인스턴스가 소유하는 객체에 대한 접근을 제공하지만, 소유자의 수에는 포함되지 않는 스마트 포인터입니다.
shared_ptr은 참조 횟수(reference count)를 기반으로 동작하는 스마트 포인터입니다.
만약 서로가 상대방을 가리키는 shared_ptr를 가지고 있다면, 참조 횟수는 절대 0이 되지 않으므로 메모리는 영원히 해제되지 않습니다.
이렇게 서로가 상대방을 참조하고 있는 상황을 순환 참조(circular reference)라고 합니다.
weak_ptr은 바로 이러한 shared_ptr 인스턴스 사이의 순환 참조를 제거하기 위해서 사용됩니다.
> [코딩교육 티씨피스쿨](http://tcpschool.com/cpp/cpp_template_smartPointer)
