[C++] 공유(Shared) 포인터
카테고리: Cpp
이 글은 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();
참조
💻 열심히 공부해서 작성 중이니 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 알려주시면 감사하겠습니다! 😸
댓글 남기기