>백엔드 개발 >C++ >C 스마트 포인터 구현은 무엇이고 어떻게 다릅니까?

C 스마트 포인터 구현은 무엇이고 어떻게 다릅니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-30 10:46:12653검색

What C   Smart Pointer Implementations Exist and How Do They Differ?

어떤 C 스마트 포인터 구현을 사용할 수 있나요?

C 03

  • std::auto_ptr: 제한된 가비지 수집, 할당된 배열을 보유할 수 없음 object,不支持拷贝,已废弃。
  • std::auto_ptr_ref: 복사 및 할당을 위해 std::auto_ptr과 함께 사용되는 스마트 포인터가 아닙니다.

C 11

  • std::unique_ptr: std::auto_ptr을 대체하고 성능이 향상되었으며 배열과 함께 작동하고 STL 컨테이너에서 사용할 수 있습니다.
  • std::shared_ptr: 참조 카운트 스마트 포인터는 여러 소유자가 공유할 수 있으며 스레드로부터 안전합니다.
  • std::weak_ptr: std::shared_ptr이 소유한 객체에 대한 참조는 방지하지 않습니다. 삭제.

Boost

  • boost::shared_ptr: 표준을 준수하는 공유 PTR, 사용하기 쉽습니다. , 일부에서는 높은 오버헤드 케이스.
  • boost::weak_ptr: 표준을 준수하는 약한_ptr은 Boost::shared_ptr에 대한 비소유 참조를 허용합니다.
  • boost::scoped_ptr: std::unique_ptr과 유사하며 Boost::shared_ptr보다 오버헤드가 적습니다. STL 컨테이너에서는 사용할 수 없습니다.
  • boost::intrusive_ptr: 자신만의 스마트 포인터 호환 클래스를 만들기 위한 사용자 정의 가능한 스마트 포인터.
  • boost::shared_array : 배열용 Shared_ptr은 동적 배열 할당을 지원하며 삭제.
  • boost::scoped_array: 복사할 수 없는 배열의 Scoped_ptr은 STL에서 사용할 수 없습니다. 컨테이너.

Qt

  • QPointer: QObject 및 파생 클래스에 대한 약한 스마트 포인터는 강한 포인터.
  • QSharedDataPointer: 강력한 스마트 포인터, 수동 참조 계산 필요, QSharedData의 하위 클래스화 가능.
  • QExplicitlySharedDataPointer: QSharedDataPointer와 유사, 더 많은 제어 제공 ~ 위에 분리.
  • QSharedPointer: 원자 참조 계산, 스레드 안전, 사용자 정의 가능한 삭제, 높은 오버헤드.
  • QWeakPointer: 다음과 함께 사용되는 약한 스마트 포인터 순환을 방지하는 QSharedPointer
  • QScopedPointer: 단일 소유자 스마트 포인터, QSharedPointer보다 오버헤드가 적습니다.

위 내용은 C 스마트 포인터 구현은 무엇이고 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.