복습
스마트 포인터 - weak_ptr, unique_ptr
Crat3
2023. 10. 13. 16:11
1. shared_ptr의 순환참조 문제
두 객체가 서로를 가리키고 있을 때 메모리가 해제되지 않는다.
2. weak_ptr
순환참조 문제를 해결하기 위해 expired 함수를 사용하여 해당 포인터가 nullptr 인지 체크할 수 있다.
이어서 lock 함수를 사용하여 shared_ptr로 꺼내어 사용할 수 있다.
weak_ptr이 객체를 참조해도 참조 카운트를 증가시키지 않는다.
3. unique_ptr
객체를 가리키는 포인터가 오직 하나만 존재할 수 있다.
복사 생성자와 복사 연산자를 사용할 수 없게 막는다. 단, std::move 함수를 이용한 이동(오른값 참조)은 가능하다.