어떤 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!