C++new and delete
The new Keyword
Thenew keyword lets you manage memory yourself.
In the example below, we create memory space for an integer usingnew, store the value35 in it, and print it using apointer:
Explanation:
new intcreates memory space for one integerptrstores the address of that space*ptr = 35;stores the number 35cout << *ptr;prints the value
So we usednew to create memory, andptr to access it.
The delete Keyword
When you create something withnew, it's your job to remove it when you're done.
To do that, usedelete:
This tells C++: "I'm done with this memory, you can clean it up now."
What Happens If You Forgetdelete?
If you forget to delete memory, your program will still run, but it may use more and more memory over time.
This is called amemory leak, and it can slow down or crash your program over time.
Using new and delete with Arrays
You can also use thenew keyword to create dynamic arrays.
Note: For arrays, usenew[] anddelete[].For single variables, usenew anddelete.
Dynamic arrays are useful when you don't know the size of the array in advance - like when the size depends on user input or other values that are not known at the start of the program.
For example, imagine you run a hotel. Since you don't know how many guests will arrive, you ask the user for the number and create that many rooms - one to store each guest's name:
Example
#include <string>
using namespace std;
int main() {
int numGuests;
cout << "How many guests? ";
cin >> numGuests;
// Check for invalid input
if (numGuests <= 0) {
cout << "Number of guests must be at least 1.\n";
return 0;
}
// Create memory space forx guests (an array of strings)
string* guests = new string[numGuests];
// Ignore the leftover newline character after reading numGuests
cin.ignore();
// Enter guest names
for (int i = 0; i < numGuests; i++) {
cout << "Enter name for guest " << (i + 1) << ": ";
getline(cin, guests[i]); // Read the full name (including spaces)
}
// Show all guests
cout << "\nGuests checked in:\n";
for (int i = 0; i < numGuests; i++) {
cout << guests[i] << "\n";
}
delete[] guests; // Clean up memory
return 0;
}
Example Result:
How many guests? 3
Enter name for guest 1: John Doe
Enter name for guest 2: Liam Spurs
Enter name for guest 3: Jenny Kasp
Guests checked in:
John Doe
Liam Spurs
Jenny KaspWhen to Usenew
In most cases, you don't need to usenew. C++ will automatically handle memory for normal variables like:
string name = "John";
Butsometimes, you have to manage memory yourself - especially when:
- You don't know how much memory you'll need in advance (like how many guests or scores)
- You want to create memory while the program is running, based on user input
- You need to store large or flexible amounts of data
- You want full manual control over memory (e.g., performance-critical code)
In those cases,new helps you create memory, anddelete helps you clean it up when you're done.
Tip: If you usenew, always remember to usedelete (ordelete[] for arrays) to avoid memory leaks.

