17.9. Class unique_ptr and Dynamic Memory Allocation
A common programming practice is to allocate dynamic memory, assign the address of that memory to a pointer, use the pointer to manipulate the memory and deallocate the memory with
delete when the memory is no longer needed. If an exception occurs after successful memory allocation but before the
delete statement executes, a memory leak could occur. C++11 provides class template unique_ptr in header <memory> to deal with this situation.
An object of class
unique_ptr maintains a pointer to dynamically allocated memory. When a
unique_ptr object destructor is called (for example, when a