>백엔드 개발 >C++ >어떤 C 스마트 포인터를 선택해야 합니까?

어떤 C 스마트 포인터를 선택해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-02 17:10:12198검색

Which C   Smart Pointer Should I Choose?

사용 가능한 C 스마트 포인터 구현 및 비교

C 03

  • std::auto_ptr: 향후 C 표준에서는 더 이상 사용되지 않습니다. 제한된 가비지 수집, 소유권 문제 및 STL 컨테이너에서의 사용 불가.
  • std::auto_ptr_ref: 진정한 스마트 포인터가 아닙니다. 복사 및 할당을 허용하기 위해 std::auto_ptr과 함께 사용됩니다.

C 11

  • std::unique_ptr: std::auto_ptr을 대체합니다. std::auto_ptr의 약점을 수정하여 배열 작업, lvalue 보호 및 STL 컨테이너에서의 사용을 허용합니다.
  • std::shared_ptr: 참조 계산 스마트 포인터. 앨리어싱 및 포인터 연산을 지원합니다.
  • std::weak_ptr: std::shared_ptr이 소유한 객체에 대한 비소유 참조입니다. 무기한 순환 참조 카운트를 방지합니다.

Boost

  • boost::shared_ptr: 인기 있는 공유 참조 카운트 스마트 포인터입니다. 높은 성능과 다양성.
  • boost::weak_ptr: Boost::shared_ptr에 대한 비소유 참조.
  • boost::scoped_ptr: Boost::shared_ptr에 대한 간단한 스마트 포인터 대안 오버헤드.
  • boost::intrusive_ptr: 자신만의 스마트 포인터 호환 클래스를 생성하기 위한 사용자 정의 스마트 포인터.
  • boost::shared_array: 공유 스마트 포인터 배열.
  • boost::scoped_array: 복사할 수 없는 배열용 스마트 포인터.

Qt

  • QPointer: 약한 스마트 포인터 QObject 및 파생 클래스. 더 이상 사용되지 않습니다.
  • QSharedDataPointer: 스레드 안전성을 갖춘 Boost::intrusive_ptr과 비교할 수 있는 강력한 스마트 포인터.
  • QExplicitlySharedDataPointer: 향상된 QSharedDataPointer 버전 2.0 통제하다 분리.
  • QSharedPointer: 원자 참조 카운팅, 스레드 안전, 공유 가능 스마트 포인터.
  • QWeakPointer: QSharedPointer.
  • QScopedPointer: Boost::scoped_ptr 기반의 단일 소유자 스마트 포인터로 예외로부터 안전한 코드 및 호환성에 적합합니다.

위 내용은 어떤 C 스마트 포인터를 선택해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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