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 the User 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