[C++] 스마트 포인터.

2011. 12. 27. 19:11제2외국어/Windows

C++ 표준 라이브러리에서 제공하는 스마트포인터.

: 참조되는 만큼 참조 카운트를 증가시키고, 반대라면 감소시켜 0이 되면 삭제 시키는 포인터라고 보면 되겠습니다.
( Objective-C에서 Auto-release or ARC 기능과 마찬가지로 어떻게 보면 사용하기 편한 포인터입니다. )

다음과 같은 3가지 특징이 있습니다.
1. 생성과 소멸 작업을 조절 가능.
2. 복사와 대입 동작을 조절 가능 .
3. 역참조 동작을 조절 가능.

하지만 타입제약이 엄격하다는 단점이 있습니다.

대표적인 스마트 포인터로는 auto_ptrshared_ptr 가 있습니다.
( 그 외에 weak_ptr, intrusive_ptr. shared_array, scoped_ptr 등이 있습니다. )
 
더 자세하게 알고싶다면  http://blog.daum.net/creazier/15309389  <-- 자세한 설명이 되어 있습니다!

아래는 위 블로그에서 일부분을 쓴 내용입니다.

1. auto_ptr    

    : C++ 표준 라이브러리에서 제공    
    : 
소유권 이전 금지 (-const 키워드 사용)  

    [특징]

    - 댕글링 포인터 문제를 해결한다.
     
: 이미 메모리에서 해체된 대상을 가리키고 있는 포인터 )


2. shared_ptr

    : 소유권이 공유되는 방식으로 동작하는 스마트 포인터    

    : STL 컨테이너에서 사용이 가능하다. (boost library를 반드시 설치하고, include 해야 한다.) 

    [특징]

    : 강한 참조의 성격을 가지고 있다.

    : Thread Safety 해제 - 헤더 파일에 " #define BOOST_DISABLE_THREADS "를 적어준다.



// 추가 설명 및 예제가 있는 블로그들... 
http://blog.daum.net/creazier/15309389  
http://blog.naver.com/kjs077?Redirect=Log&logNo=10106740255