Objects in memory
All the objects we use in a C++ program reside in memory. Here, we will explore how objects are created and deleted from memory and also describe how objects are laid out in memory.
Creating and deleting objects
In this section, we will dig into the details of using new
and delete
. We are all familiar with the standard way of using new for creating an object on the free store and then deleting it using delete
:
auto user = new User{"John"}; // allocate and construct user->print_name(); // use object delete user; // destruct and deallocate
As the comments suggest, new
actually does two things:
- Allocates memory to hold a new object of the
User
type - Constructs a new
User
object in the allocated memory space by calling the constructor of theUser
class
The same thing goes with delete
:
- Destructs the
User
object by calling its destructor - Deallocates/frees the memory that the
User
object was placed in
Placement new
C++ allows us to separate memory allocation...