Skip to content

Latest commit

 

History

History
34 lines (18 loc) · 1.9 KB

SmartPointer.md

File metadata and controls

34 lines (18 loc) · 1.9 KB

스마트 포인터 (Smart Pointer)

스마트 포인터는 C++11 에서부터 추가되기 시작하였으며 C++에서 스마트 포인터를 사용하려면 <memory> 헤더가 필요하다. C++ 스마트 포인터에는 unique_ptr, shared_ptr, weak_ptr 이 존재한다.

스마트 포인터는 C++ 에서 포인터 변수와 관련하여 안전하고 효율적인 코드를 작성하는데 유용하다.

스마트 포인터는 일반 포인터처럼 생겼으나 일반 포인터 보다 많은 기능을 가진 객체이다. 객체는 포인터 값에 접근하기 위한 operator *operator ->를 지원하여야 한다. 스마트 포인터가 일반 포인터 보다 똑똑하기 위해 일반 포인터가 하지 못하는 일을 하고자 한다. C++ 프로그램에서 가장 많이 발생하는 문제가 포인터와 메모리 관리와 관련되어 있다.

C++에서 스마트 포인터를 사용하는 공통적인 이유는 다음과 같다.

  • 자동 메모리 해지

스마트 포인터를 사용하면 delete를 명시적으로 호출하지 않아도 되기 때문에 동적으로 할당한 메모리의 해지에 대해서 잊어도 된다.

  • 자동 초기화

스마트 포인터가 객체이기 때문에 디폴트 생성자에서 포인터 변수를 NULL로 초기화하하기 때문에 명시적으로 NULL로 초기화하지 않아도 된다.

  • Dangling 포인터

Dangling 포인터는 이미 메모리에서 삭제된 객체를 가리키는 포인터로 스마트 포인터를 사용할 경우 이러한 포인터가 없도록 한다.

  • 가비지 컬렉션 (Garbage Collection)

  • 효율성

스마트 포인터는 가용한 메모리를 좀더 효율적으로 사용할 수 이도록 하며 할당, 해지 시간을 단축시킬 수 있다.

스마트 포인터가 사용되는 곳

이 곳에서는 세 가지의 포인터에 대해서 살펴본다.