더북(TheBook)

weak_ptr<T> 객체를 사용하는 가장 큰 이유는 shared_ptr<T> 객체로 부주의하게 순환 참조를 만들기 때문이다. shared_ptr<T> 객체 pAshared_ptr<T> 객체 pB를 가리키고, pBpA를 가리키면 순환 참조가 된다. 이렇게 되면 어떤 객체도 소멸할 수 없게 된다. 실무에서는 더 복잡한 양상으로 순환 참조가 발생한다. weak_ptr<T> 객체는 순환 참조 문제를 회피하기 위해 고안되었다. shared_ptr<T> 객체가 가리키는 객체를 weak_ptr<T> 객체를 사용해 가리키면 순환 참조를 피할 수 있다. 좀 더 자세한 설명은 나중으로 미뤄두겠다. 마지막 shared_ptr<T> 객체가 소멸하면 가리키던 객체도 소멸하게 된다. shared_ptr<T>와 연관된 weak_ptr<T> 객체는 유효 객체를 가리키는 것이 아니게 된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.