C++스마트 포인터--(스마트 포인터 인식)

1739 단어 C++1x
기 존의 C++에서 우 리 는 자원 방출 을 신청 하면 자원 방출 을 잊 어 버 려 유출 될 수 있다.C++11 은 스마트 포인터 라 는 개념 을 도입 하여 인용 계수 의 아 이 디 어 를 사용 하여 프로그래머 가 수 동 으로 메모 리 를 방출 하 는 것 에 관심 을 가지 지 않도록 한다.이 스마트 포인터 에는 std:shared 가 포함 되 어 있 습 니 다.ptr、std::weak_ptr、std::unique_ptr 를 사용 하려 면 헤더 파일 이 필요 합 니 다.
        :          ,                  ,                 
   ,                 。

std::shared_ptr
    std::shared_ptr       ,        shared_ptr        ,         
delete,                    。     ,    std::shared_ptr      
new   ,                 。std::make_shared            new,  
std::make_shared             ,         std::shared_ptr  。
    std::shared_ptr    get()         ,  reset         ,   use_count()
            。
    

std::unique_ptr  
    std::unique_ptr           ,                  ,         
std::make_unique C++14  ,make_unique     ,C++11      std::make_unique,       :

template
std::unique_ptr make_quique( Args&& ...args) {
    return std::unique_ptr( new T(std::forward(args)...));
}

     ,          。  ,      std::move        unique_ptr。

std::weak_ptr 당 std::sharedptr 에 자원 을 방출 할 수 없 는 문제 가 존재 합 니 다.이 문 제 를 해결 하 는 방법 은 약 한 인용 지침 std::weakptr,std::weak_ptr 는 약 한 인용(비교 해 보면 std:sharedptr 는 강 한 인용 이다.약 한 인용 은 인용 계수 증 가 를 일 으 키 지 않 습 니 다.
    std::weak_ptr  *    ->   ,            ,            std::shared_ptr
    , expired()           ,   true。    false。

총결산
            ,               ,C++1x       ,         
new/delete   ,            。

참고 자료:
    《깊이 이해 C+11>
    《고속 착수 C++11/14/17>
관련 서적 다운로드 주소

좋은 웹페이지 즐겨찾기