C++ Tutorial Index

C++ Tutorial C++ History C++ Installation C++ First Program C++ cin and cout C++ Data type C++ Variable C++ operator C++ Keywords

C++ Control Statements

C++ If C++ Nested if C++ If-else C++ If-else-if C++ Switch C++ Break C++ Continue C++ Goto C++ For loop C++ While loop C++ Do while loop

C++ Functions

C++ Call by Value C++ Call by Reference C++ Recursion Function C++ Inline function C++ Friend function

C++ Arrays

Single dimension array Two dimension array

C++ Strings

C++ Strings

C++ Inheritance

C++ Inheritance Single level Inheritance Multilevel Inheritance Multiple Inheritance Hierarchical Inheritance Hybrid Inheritance

C++ Polymorphism

C++ Polymorphism C++ Overloading C++ Overriding C++ Virtual Function

C++ Pointers

C++ Pointers C++ this pointer

C++ Exception Handling

C++ Exception Handling

C++ Constructors

C++ Constructors Default Constructor Parameterize Constructor Copy constructor Constructor Overloading Destructor

C++ File Handling

C++ File Handling C++ Writing to file C++ Reading file C++ Close file


C Vs C++ C++ Comments C++ Data Abstraction C++ Identifier C++ Memory Management C++ Storage Classes C++ Void Pointer C++ Array To Function C++ Expressions C++ Features C++ Interfaces C++ Encapsulation std::min in C++ External merge sort in C++ Remove duplicates from sorted array in C++ Precision of floating point numbers Using these functions floor(), ceil(), trunc(), round() and setprecision() in C++ C++ References C++ Friend Functions C++ Mutable keyword Unary Operators in C++ Initialize Array of objects with parameterized constructors in C++ Differences between #define & const in C/C++ C++ Program to Implement Shell Sort C++ Program to Implement Merge Sort Storage Classes in C Vector resize() in C++ Passing by Reference Vs. Passing by the pointer in C++ Free vs delete() in C++ goto statement in C and C++ C++ program to read string using cin.getline() C++ String Concatenation Heap Sort in C++ Swap numbers in C++ Input Iterators in C++ Fibonacci Series in C++ C ++ Program: Alphabet Triangle and Number Triangle C++ Program: Matrix Multiplication C++ Program to Print Fibonacci Triangle Stack in C++ Maps in C++ Queue in C++ C++ Bitset C++ Algorithms Priority Queue in C++ C++ Multimap C++ Deque Function Pointer in C++ Sizeof() Operators in C++ C++ array of Pointers free() Vs delete in C Timsort Implementation Using C++ CPP Templates C++ Aggregation C++ Enumeration C++ Math Functions C++ Object Class C++ Queue Initialize Vector in C++ Vector in C++ C++ STL Components Function overloading in C++ C++ Maximum Index Problem C++ find missing in the second array C++ Program to find the product array puzzle C++ Program To Find Largest Subarray With 0 Sum C++ Program To Move All Zeros To The End Of The Array C++ Program to find the element that occurs once C++ Program to find the largest number formed from an array Constructor Vs Destructor C++ Namespaces C++ OOPs Concept C++ Static C++ Structs C++ Try-Catch C++ User Defined Exceptions C++ Virtual Destructor C++ vs C# Malloc() and new in C++ Palindrome Number Program in C++ Snake Code in C++ Splitting a string in C++ Structure Vs Class in C++ Virtual Function Vs Pure Virtual Function C++ Bidirectional Iterators C++ Forward Iterators C++ Iterators C++ Output Iterators C++ Range-based For Loop Converting string into integer in C++ LCM Program in C++ Type conversion in C++ Add two numbers using the function in C++ Advantage and disadvantage friend function C++ Armstrong Number Program in C++ ATM machine program in C++ using functions Binary to Decimal in C++ Bit Manipulation in C++ C++ Constructor C++ Dijkstra Algorithm Using the Priority Queue C++ int into String C++ Signal Handling Decimal to Binary in C++ Decimal to Hexadecimal in C++ Decimal to Octal in C++ Factorial Program in C++ Function in C++ Hexadecimal to Decimal in C++ Octal to Decimal in C++ Reverse a Number in C++ Structure Vs Class in C++ C++ Forward Iterators C++ Output Iterators C++ Prime number program Constructor Overloading in C++ Different Ways to Compare Strings in C++ Program to convert infix to postfix expression in C++ SET Data Structure in C++ Upcasting and Downcasting in C++ Reverse an Array in C++ Fast Input and Output in C++ Delete Operator in C++ Copy elision in C++ C++ Date and Time C++ Bitwise XOR Operator Array of sets in C++ Binary Operator Overloading in C++ Binary Search in C++ Implementing the sets without C++ STL containers Scope Resolution Operator in C++ Smart pointers in C++ Types of polymorphism in C++

Cp++ Memory Management

Memory management is a method of controlling computer memory and allocating memory space to applications to increase overall system performance.

What is the purpose of memory management?

Because the array contains homogeneous data, most likely, the array is allocated memory when it is disclosed. When specific memory is not mentioned until runtime, problems can develop. To avoid this scenario we declare arrays with limit measurements, but some memory will be left unused. To reduce memory waste, we use a new operator to dynamically allocate memory during runtime.

Operators in Memory Management

The malloc () or calloc () methods in C are used to dynamically allocate memory at runtime, while the free () function is used to de-allocate dynamically generated memory. These functions are also supported in C ++, although new and unified operators, such as Delete, are defined to perform similar tasks, namely allocating and freeing memory.

New Operator: The object is created using the new operator, and is deleted with the Delete Operator. When we use a new operator to create an object, the object will remain alive until we explicitly destroy it with the Delete operator. Consequently, we can conclude that the lifetime of the object is unrelated to the block structure of the program.


ptr_variable = new data-type


The new operator is used to create the object in the above syntax. The pointer variable is named 'ptr variable', the operator is 'new' and the data type is 'data-type' in the previous syntax.


int *A;  
A = new int;  


In the above example ‘A’ is a pointer variable of type integer.

Giving the newly generated object a value

There are two methods to provide the newly generated object values:

  • Using the assignment operator, we can assign a value to a newly generated object. In the example above, we have created two integers and float pointers, 'p' and 'q,' respectively. Values are now assigned as follows:


*a = 55;  
*b = 19.2;

The freshly formed int object gets 55, while the newly produced float object gets 19.2.

  • We may also use the new operator to allocate the values, as seen below:


ptr_variable = new data-type(value);

How do you make a one-dimensional array?

Because we know that new operators can be used to generate memory space for any data type, including user-defined data types such as arrays, structures, and unions, the syntax for generating one-dimensional arrays is as follows:


ptr-variable = new data-type[size]; 


int *A1 = new int[9]; 


We have generated an array of type int with a size of 9 in the preceding expression, where p[0] refers to the first element, p[1] refers to the first element, and so on.

Delete Operator

When memory is no longer needed, it has to be de-allocated so that it can be used for anything else. The Delete Operator can be used to do this, as shown below:

delete ptr_variable;  


The operator 'delete' is used to remove the object that exists in the above statement, and 'ptr variable' is the name of the pointer variable.

In the previous situation, we used the new operator to generate two pointers, 'a' and 'b', which can be erased with the following statements:

delete a;
delete b;

Using the following syntax, the dynamically allocated array may be deleted from the memory space:

delete [size] ptr_variable;   


In the previous sentence, we should supply the size, which specifies the quantity of items that must be released. The disadvantage of this approach is that we need to know the size of the array. However, we no longer need to display the following measurements in the new version of C ++.

delete [ ] ptr_variable;   

Example to understand this concept easily:

#include <iostream> 
#include <stdlib.h>
#inlcude <bits/stdc++.h>
#include <stdio> 
using namespace std  
int main()  
Int n;  // variable declaration  
int *A = new int[n];   // creating an array   
cout<<"enter the size of the array : ";     
std::cin >> n;    //   
cout<<"\nenter the element : ";  
for(int i=0;i<n;i++)   // for loop  
cout<<"\nThe elements that you have entered are :";  
for(int i=0;i<n;i++)    // for loop  
delete A;  // deleting an existing array.  
return 0;  


enter the size of the array: 10
enter the element : 1
The element that you have entered are : 1,2,3,4,5,6,7,8,9,10,
……..Program finished with exit code 0
Press any key to exit console.


Using the new operator, we have created an array in the code above. At runtime, the above software will accept user input for the size of the arena. When the program completes all activities, it uses the Delete 'A' commands to remove the object.

Benefits of new Operator

  • It does not use the sizeof () operator because the size of the data objects is calculated automatically.
  • It is not necessary to use typecasting as it delivers the right data type pointer.
  • New and deleted operators, like other operators, may be overloaded.
  • It also allows you to initialize the data object as it is being created in memory.