## 스마트 포인터란? `#include <memory>` 헤더로 사용 가능하다. C++ 프로그램에서 new 키워드를 사용하면, delete로 해제할 수 있다. C++은 메모리 릭으로부터 안전하기 위해 스마트 포인터를 사용할 수 있는데, 포인터처럼 동작하는 클래스로 **사용이 끝난 메모리를 자동으로 해제**해주는 기능 ## unique_ptr 하나의 스마트 포인터만이 특정 객체를 소유할 수 있도록 객체에 소유권 개념을 도입 소유권을 이전할 수 있지만, 스마트포인터가 객체의 소유권을 가지고 있을 때만 소멸자가 해당 객체를 삭제할 수 있게 함 ## shared_ptr 하나의 특정 객체를 참조하는 스마트 포인터가 총 몇개인지 확인하여 shared_ptr의 수명이 다하고, 참조 횟수가 0이 되면 delete 키워드를 이용하여 해제된다. 스마트 포인터의 개수를 참조 횟수(ref count)라고 함. ## weak_ptr shared_ptr 인스턴스가 소유하는 객체에 대한 접근을 제공하지만, 소유자의 수는 포함되지 않는 스마트 포인터로, shared_ptr에서 순환 참조가 일어나는것을 제거하기 위해 사용한다. ### 사용 방법 new 키워드를 사용해 일반 포인터가 메모리를 가리키도록 초기화하고, 기본 포인터를 스마트포인터에 대입하여 사용한다. 이렇게 정의된 스마트 포인터가 수명이 다하면 소멸자를 통하여 자동으로 메모리 해제가 진행된다. ### 1. 가비지 컬렉터와 다른 점이 뭐지? 가비지 컬렉터의 경우, 메모리를 할당한 변수들을 전부 돌면서 확인하는 과정을 거치지만 C++의 스마트포인터의 경우 내가 지정한 변수들에 대해서만 검사를 진행할 수 있다는 큰 강점을 가지고 있다고 생각해. 언리얼 오브젝트에는 스마트포인터를 사용하진 못한다. 언리얼오브젝트는 가비지컬렉터에 의해 자동으로 메모리가 관리되기 떄문에...
Activity
[-][C++] 스마트 포인터[/-][+][C++] 스마트 포인터 (부제 : 가비지 컬렉터와 스마트 포인터의 차이점이 뭔데?)[/+]