약한 포인터
-
2. std::shared_ptr 과 std::weak_ptrModern C++/Smart Pointer 2020. 7. 12. 17:07
std::shared_ptr 동적 할당된 객체의 소유권을 공유할 때 std::shared_ptr를 이용해 메모리를 관리한다. 메모리 해제 시점은 동적 객체를 가리키는 모든 공유 포인터가 더 이상 해당 객체를 가리키지 않을 때로 더 이상 공유 포인터가 가리키는 객체의 수명에 대해 신경 쓸 필요가 없어진다. 이렇게 메모리가 해제되는 시점은 원자적 참조 횟수(atomic reference count)를 통해 공유 포인터 생성 시 카운트를 증가시키고, 소멸 시 카운트를 감소시킨다. 복사 배정 연산자의 경우 증가와 감소가 모두 일어난다. 참조 횟수는 제어 블록(control block)에서 관리하며 공유 포인터의 대략적인 구조는 아래와 같다. 위와 같이 공유 포인터는 객체를 가리키는 포인터와 별개로 제어블록을 가..