2013-08-21 4 views
0

저는 C++의 초보자입니다. 나는 두 가지 질문이 내 코드C++에서 std :: unique_ptr과 std :: shared_ptr의 차이점

typedef std::unique_ptr<type1> type1Handler; 
typedef std::shared_ptr<type2> type2Handler; 

에 표준 : : unique_ptr 및 표준 : : shared_ptr에의 사용을 통해 온 : unique_ptrshared_ptr

  • 를 사용의 장점은 무엇

    1. 무엇 그들 사이의 주요한 차이점은 무엇입니까?

    아마도 예제가 도움이 될 것입니다.

  • +3

    당신은 모든 Google 시도해 봤어? –

    답변

    6

    두 가지 완전히 다른 사용 사례입니다.

    1. std::unique_ptr는 객체의 유일한 소유권을 보유하고 unique_ptr이 범위를 벗어나면 그 개체를 파괴합니다. 아무도 unique_ptr의 인스턴스가 동일한 객체를 관리 할 수 ​​없습니다. (http://en.cppreference.com/w/cpp/memory/unique_ptr)

    2. std::shared_ptr객체의 소유권을 공유 유지한다. 여러 개의 shared_ptr 개체가 동일한 개체를 소유 할 수 있습니다. 개체를 소유 한 마지막 나머지 shared_ptr이 파괴되거나 개체를 소유 한 마지막 나머지 shared_ptroperator= 또는 reset()을 통해 다른 포인터가 할당되면 개체가 파괴되고 해당 메모리가 할당이 취소됩니다. (http://en.cppreference.com/w/cpp/memory/shared_ptr)

    std::unique_ptr 비 양도 및 비 복사 가능한 것입니다 단독 소유권을 적용합니다. 즉, 이동 의미 체계를 사용해야합니다.

    코드에 unique_ptr이 표시되면 이는 을 의미합니다. 여기에 포인터가 있으며 우리는 그것을 소유하고 있습니다!. 소유권이 코드 주위에 흩어질 수있는 shared_ptr에 대해서는 언급 할 수 없습니다.

    관련 문제