C++는 JAVA와 달리 가비지 컬렉터가 없기 때문에 new로 메모리 할당을 하고 사용이 끝나면 사용자가 반드시 delete로 해제해줘야 한다. 하지만 스마트 포인터는 포인터처럼 동작하는 클래스 템플릿으로써, 할당 후 메모리 해제를 해주지 않아도 자동으로 해제해주는 기능을 가진 녀석이다. 더 정확하게 이야기하면 스마트 포인터라는 클래스 템플릿의 소멸자에는 사용한 자원을 해제해주는 코드가 포함되어 있다고 한다. 이러면 자연스럽게 메모리 할당 후 해제를 해주지 않아서 생기는 memory leak도 어느 정도 해결될 것이라고 생각한다. 신기하게 new로 할당한 메모리도 스마트 포인터에 대입하면 나중에 해제해주지 않아도 된다고 한다. 스마트 포인터에는 unique_ptr, shared_ptr, weak_ptr ..