Automatically handling resources with std::unique_ptr
Since C++11, the STL provides smart pointers that really help keep track of dynamic memory and its disposal. Even before C++11, there was a class called auto_ptr
that was already able to do automatic memory disposal, but it was easy to use the wrong way.
However, with the C++11-generation smart pointers, we seldom need to write new
and delete
ourselves, which is a really good thing. Smart pointers are a shiny example of automatic memory management. If we maintain dynamically allocated objects with unique_ptr
, we are basically safe from memory leaks, because upon its destruction this class automatically calls delete
on the object it maintains.
A unique pointer expresses ownership of the object it points to and follows its responsibility of freeing its memory again if it is no longer used. This class has the potential of relieving us forever from memory leaks (at least together with its companions shared_ptr
and weak_ptr
, but in this recipe...