[C++] 공유(Shared) 포인터

Date:     Updated:

카테고리:

태그:

이 글은 C++의 공유(Shared) 포인터을 공부하고 정리한 글입니다.
공유 포인터는 유니크 포인터와 다르게 원시 포인터를 다른 공유 포인터와 공유 할 수 있다.

공유 포인터(shared_ptr)

  • 두 개의 포인터를 소유
    • 데이터(원시 포인터)를 가리키는 포인터
    • 제어 블록을 가리키는 포인터
  • std::unique_ptr와 달리, 포인터를 다른 std::shared_ptr와 공유할 수 있음
  • 참조 카운팅 기반
  • 원시 포인터는 어떠한 std::shared_ptr에게도 참조되지 않을 때 소멸됨
  • 강한 참조 카운트를 늘림

    코드 예시

    int main()
    {
        std::shared_ptr<Vector> vector = std::make_shared<Vector>(10.f, 30.f);
        std::shared_ptr<Vector> copiedVector = vector;    // 포인터의 소유권을 공유한다
    }
    

    reset()

    void reset() noexcept;
    
    • 원시 포인터를 해제한다
    • 참조 카운터가 1 줄어듦
    • nullptr를 대입하는 것과 같음
    mySharedPtr.reset();
    
    mySharedPtr = nullptr;
    

    use_count()

    long use_count() const noexcept;
    
    • 원시 포인터를 참조하고 있는 std::shared_ptr의 개수를 반환한다
    long number = mySharedPtr.use_count();
    


참조

포큐아카데미 C++ 언매니지드 프로그래밍



💻 열심히 공부해서 작성 중이니 오류나 틀린 부분이 있을 경우 
  언제든지 댓글 혹은 메일로 알려주시면 감사하겠습니다! 😸

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기