스마트 포인터 - 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 함수를 이용한 이동(오른값 참조)은 가능하다.

'복습' 카테고리의 다른 글

스마트 포인터 - shared_ptr  (0) 2023.10.11
오른값 참조 (r-value Reference)  (0) 2023.10.11
람다 표현식 (Lambda)  (0) 2023.10.11
함수 객체 ( functor ; 펑터 )  (0) 2023.10.06
함수 포인터  (0) 2023.10.06