[c++]SmartPointer

C++/Tips / / 2021. 2. 2. 16:10

=> 동적할당시, 원래는 new로 할당을 받고, delete로 삭제해야함.

=> Java처럼, 사용이 끝난 메모리를 자동으로 해제해주는 포인터

 

1. 종류

=> unique_ptr

    -> 객체의 유일한 소유권을 부여함으로써, 소유권을 보유할때만 소멸자가 해당 객체를 삭제할 수 있게 하는 포인터

    -> "유일한 소유권"이기 때문에, 동시에 두개 이상이 되서는 안됨[동일한 객체를 가질 수 없음]

    -> 또한 소유권의 이전이 불가능하여, 이전 소유권을 소멸시키고, 새 소유권을 생성해야함

 

=> shared_ptr

    -> 객체에 대한 소유권을 여러 스마트포인터가 공유하면서 참조 카운트 방식을 사용

    -> 참조 카운트가 0이 되면 데이터를 해제

    -> 참조 카운트 덕분에 명시적으로 메모리 해제 시점을 알 수 있음

    -> Deadlock의 가능성이 존재함[Circular reference]

 

=> weak_ptr

    -> 객체에 대한 소유권을 여러 스마트 포인터가 공유하지만, 참조 카운트의 값은 변화 없음

'C++ > Tips' 카테고리의 다른 글

[c++]Try / Catch  (0) 2021.02.16
[c++/c#]Region  (0) 2021.02.09
[c++] struct  (0) 2021.01.26
[c++]Typename  (0) 2021.01.26
[c++]auto  (0) 2021.01.19
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기