Game Tech Blog

C++ - Smart Pointer 본문

IT Study/C,C++

C++ - Smart Pointer

jonghow 2022. 4. 4. 23:06
반응형

스마트 포인터(Smart Pointer)란?

- 대표적인 Unmanaged 언어인 C++은 메모리에 대해 직접 관리해 할당에 대한 누수를 처리해주어야 한다.

할당한 메모리를 Release 시켜주지 않을 경우, Memory Leak 이 쌓이게 되며 램에 한공간에 축적되어 시스템 저하를 발생시킨다.

쉽게말해, 프로그램의 안전성을 보장하기 위해 스마트 포인터를 사용하며, 포인터 처럼 동작하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해준다.

 

동작 원리

- 기본 포인터가 실제 메모리를 가리키도록 초기화, 이후 스마트포인터에 대입하여 사용.

충분한 사용 후 소멸시 delete 키워드를 사용해 메모리 해제, new 키워드가 반환하는 주소를 스마트 포인터에 대입 시 메모리를 해제할 필요가 없어진다.

 

사용 이유

- 원시 포인터 사용보다 복잡하고 어려운데, 사용하는 이유는 다음과 같다.

1. 생성, 소멸 작업을 조절할 수 있다.

2. 메모리 릭을 막을 수 있다.

3. 역참조 동작(ref Cnt)을 조절할 수 있다.

4. 타입제약이 엄격하다.

 

스마트 포인터의 종류

- auto_ptr ( C++ 11 표준부터 삭제되었다. )

- unique_ptr 

- shared_ptr

- weak_ptr

반응형
Comments