0

Objective-C 및 자동 참조 계산에 대한 지식이 매우 명확합니다. 그리고 최근에 저는 C + +, Smart Pointer를 배우고 있습니다. 스마트 포인터와 자동 참조 카운팅이 거의 비슷하다는 것을 알게되었습니다.스마트 포인터 대 자동 참조 계산

비록 스마트 포인터와 C++ 및 Objective-C를 사용하는 코드 샘플/예제를 이용한 자동 참조 계산을 나란히 비교할 수는 없지만 (유사점과 비 유사성) 그럼 누구든지 이걸 좀 자세히 설명해 줄 수 있니?

EDIT : 여기서 스마트 포인터는 std::shared_ptr, std::weak_ptrstd::unique_ptr만을 나타냅니다.

+1

하나는 언어 기능이고 다른 하나는 언어 위에 구축 된 라이브러리 유틸리티입니다. – StoryTeller

+0

C++에는 참조 카운팅이 전혀없는 많은 스마트 포인터가 있습니다. –

+0

@ SACHINGOYAL : 여기 Smart Pointer에서 shared_ptr, weak_ptr 및 unique_ptr 만 표시합니다. –

답변

1

스마트 포인터는 참조 카운팅 측면에서 반드시 구현 될 필요는 없습니다.

unique_ptr은 참조 카운팅을 사용하지 않습니다. unique_ptr이 범위를 벗어나면 pointee는 파괴됩니다. 따라서 unique_ptr은 원시 포인터만큼 효율적이라고 간주됩니다. 독점적 인 소유권을 사용할 수있는 경우 자동 메모리 관리와 성능이 행 기반의 구현과 비슷합니다.

shared_ptr은 일반적으로 공유 소유권을 모델링하기 때문에 참조 카운팅의 일부 형식을 사용하여 구현됩니다. 더 이상 소유자가 없으면 리소스가 삭제됩니다.