프로그래밍

[C++] shared_ptr, weak_ptr

하루삼십만원 2020. 10. 18. 22:47
반응형

shared_ptr

shared_ptr 은 여러 파티에서 공통으로 사용하는 memory를 관리한다.

유일하게 객체를 소유하는 unique_ptr과는 다르게, shared_ptr이 객체를 가리킬 때,

다른 shared_ptr도 그 객체를 가리킬 수 있다.

 

shared_ptr 이 더 이상 data를 참조하지 안흔 즉시 memory를 자동으로 해제한다.

모든 thread가 thread에 대한 접근이 끝나면 메모리를 자동으로 해제 한다.

 

가능하다면 make_shared를 사용해서 shared_ptr을 만들어야 한다.

memory와 함께 관리 및 Business data를 저장하며 memory 캐싱이 보다 효율적이다.

 

shared_ptr

여기서 use_count()는 몇 개의 shared_ptr이 원래 객체를 가리키고 있는지를 알아내는데 사용된다.

이를 참조 개수(reference count)라고 하는데, reference count가 0이 되어야 가리키고 있는 객체를 해제할 수 있다.

 

weak_ptr

shared_ptr에서 발생할 수 있는 문제는 memory 해제를 방해하는 순환 참조(Cycle Rederence)다.

이러한 순환 참조 문제는 weak_ptr을 통해 막을 수 있다. weak_ptr은 공유하더라도 소유권을 주장하지 않는다.

 

반응형

'프로그래밍' 카테고리의 다른 글

[C++] Philosophy 3 & 4  (0) 2020.11.30
[C++] Philosophy 1 & 2  (0) 2020.11.29
[C++] unique_ptr  (0) 2020.10.17
[C++] string format  (0) 2020.10.12
[C++] write string with ostream, stringstream class  (0) 2020.10.11