C++ Smart Pointer


C++11 이전에는 auto_ptr이라는 스마트 포인터
이후

C++ 프로그램에서 new 키워드를 사용하여 동적으로 할당받은 메모리는, 반드시 delete 키워드를 사용하여 해제해야 합니다.
C++에서는 메모리 누수(memory leak)로부터 프로그램의 안전성을 보장하기 위해 스마트 포인터를 제공하고 있습니다.
스마트 포인터(smart pointer)란 포인터처럼 동작하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해 줍니다.


[c++ unique_ptr](https://texonom.com/c-uniqueptr-f5398735e97f48919c5bd123d9c3f486)


[c++ shared_ptr](https://texonom.com/c-sharedptr-76c60a78d57e4410b5e227761b4b57d9)


[c++ weak_ptr](https://texonom.com/c-weakptr-7a481321b5604d9dbaa2d34f2a8ecb65)

auto_ptr은 C++11 표준부터 삭제

- proper assign usage
> [std::shared_ptr initialization: make_shared () vs shared_ptr (new Foo)](https://stackoverflow.com/questions/18301511/stdshared-ptr-initialization-make-sharedfoo-vs-shared-ptrtnew-foo)


> [new를 바로 쓰기보다는 std::make_unique나 std::make_shared를 쓰자](https://itability.tistory.com/37)


> [코딩교육 티씨피스쿨](http://tcpschool.com/cpp/cpp_template_smartPointer)







