sliver__

[Mastering C++ Programming] - Smart Pointer 본문

CS/C++

[Mastering C++ Programming] - Smart Pointer

sliver__ 2022. 12. 7. 16:30
728x90
  • C++에서 스마트 포인터를 사용하면 user define garbage collection 기술을 다루는 걱정에서 벗어나 당면한 문제에 집중할 수 있습니다. 
  • 스마트 포인터를 사용하면 raw pointer를 안전하게 사용할 수 있습니다. 
  • raw pointer가 사용하는 메모리를 정리하는 책임이 있습니다.

  • C++는 다양한 시나리오에서 사용할 수 있는 다양한 유형의 스마트 포인터를 지원합니다.
    • auto_ptr
    • unique_ptr
    • 공유_ptr
    • weak_ptr
  • auto_ptr 스마트 포인터는 C++11에서 도입되었습니다. 
  • auto_ptr 스마트 포인터는 범위를 벗어나면 힙 메모리를 자동으로 해제하는 데 도움이 됩니다. 
  • 그러나 auto_ptr이 하나의 auto_ptr 인스턴스에서 다른 인스턴스로 소유권을 이전하는 방식으로 인해 더 이상 사용되지 않으며 unique_ptr이 대신 도입되었습니다. 
  • shared_ptr 스마트 포인터는 여러 공유 스마트 포인터가 동일한 개체를 참조하도록 돕고 메모리 관리 부담을 처리합니다. 
  • weak_ptr 스마트 포인터는 애플리케이션 설계에 순환 종속성 문제가 있을 때 shared_ptr 사용으로 인해 발생하는 메모리 누수 문제를 해결하는 데 도움이 됩니다.

  • 일반적으로 사용되지 않는 다른 유형의 스마트 포인터 및 관련 항목이 있으며 다음 글머리 기호 목록에 나열되어 있습니다. 
  • 그러나 언제 유용한지 알 수 없으므로 직접 탐색하는 것이 좋습니다.

  • owner_less
  • enable_shared_from_this
  • bad_weak_ptr
  • default_delete

 

  • owner_less 스마트 포인터는 동일한 raw pointer 개체를 공유하는 경우 두 개 이상의 스마트 포인터를 비교하는 데 도움이 됩니다. 
  • enable_shared_from_this 스마트 포인터는 이 포인터의 스마트 포인터를 가져오는 데 도움이 됩니다. 
  • bad_weak_ptr 스마트 포인터는 shared_ptr이 잘못된 스마트 포인터를 사용하여 생성되었음을 암시하는 예외 클래스입니다. 
  • default_delete 스마트 포인터는 delete 문을 호출하는 unique_ptr에서 사용하는 기본 삭제 정책을 나타내며 delete[]를 사용하는 배열 유형에 대한 부분 특수화도 지원됩니다.
728x90
Comments