Objects in Memory
Learn how to create, delete, and manage objects in memory using specific operators.
We'll cover the following...
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
. Consider the following way of using new
to create an object on the free store and then deleting it using delete
:
auto* user = new User{"John"}; // allocate and constructuser->print_name(); // use objectdelete user; // destruct and deallocate
We don’t recommend that you call new
and delete
explicitly in this manner, but let’s ignore that for now. Let’s get to the point; as the comments suggest, new
actually does two things, namely:
- 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
, it:
- Destructs the
User
object by calling its destructor - Deallocates/frees the memory that the
User
object was placed in
It is possible to separate these two actions (memory allocation and object construction) in C++. This is rarely used but has some important and ...