![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foepci%2FbtrIdEUqTVc%2F79VC8eQ6lAd8KYf8Hffov0%2Fimg.png)
C++/Effective Modern C++
[Effective Modern C++] Chapter 4: Smart Pointers
raw pointer의 단점 1. 포인터의 선언에서 하나의 객체를 가리키는지 배열을 가리키는지 나타내지 않는다. 2. 포인터가 가리키는 객체에 대한 사용이 끝났을 때, 포인터가 가리키는 것을 파괴해야 하는지 여부, 즉 포인터가 가리키는 것을 포인터가 소유하고 있는지 여부에 대해 아무것도 나타내지 않는다. 3. 포인터가 가리키는 것을 파괴해야 한다고 결정했다면, 파괴할 방법을 알 방법이 없다. 4. delete가 객체를 파괴할 올바른 방법이라는 것을 알 때, delete를 사용해야 할지 delete[]를 사용해야 할지 알 수 없다. 잘못된 방법을 사용하면 정의되지 않은 결과가 발생한다. 5. 코드의 모든 경로를 따라 정확히 한 번만 파괴를 수행하도록 보장하기 어렵다. 경로를 잃으면 메모리 누수가 발생하며,..