×

C++ 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.

Syntax:

ptr_variable = new data-type

Explanation:

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.

Example:

int *A;  
A = new int;  

Explanation:

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:

Example:

*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:

Example:

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:

Syntax:

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

Example:

int *A1 = new int[9]; 

Explanation:

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;  

Explanation:

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;   

Explanation:

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  
{  
cin>>A[i];  
}  
cout<<"\nThe elements that you have entered are :";  
for(int i=0;i<n;i++)    // for loop  
{  
cout<<A[i]<<",";  
}  
delete A;  // deleting an existing array.  
return 0;  
} 

OUTPUT:

enter the size of the array: 10
enter the element : 1
2
3
4
5
6
7
8
9
10
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.

Explanation:

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.

Related Topics

C++ First Program

Let's write a simple basic program structure of C++, its compilation and its execution (how it runs). This program is compiled using GCC compiler. Open any editor to write C++ program. #include<iostream>   using namespace std;   int main(){       cout<<"Welcome to C++ program"<<endl;   } Output...

2 minutes read.

Const_cast in C++ Type Casting Operators

In this tutorial, we will learn enough about const cast in the most widely used programming language, C++, as well as type casting operations. C++ supports the four types of casting...

4 minutes read.

Multilevel Inheritance

C++ Multilevel Inheritance Multilevel inheritance is such an inheritance in which a derived class is created from another derived class. C++ Multilevel Inheritance Example In this example, a base class Student is inherited in...

2 minutes read.

Passing a Vector to a function in C++

A pointer is sent to the function when we feed it an array. However, there are two ways to pass a vector: Pass by Value Pass by Reference A copy of a vector...

3 minutes read.

Copy constructor

Let's start by learning what a constructor is before diving into the copy constructor in C++. What is a constructor? A constructor is a particular type of class member function that configures the objects of...

7 minutes read.

Nullptr in C++

What is Nullptr in C++? A null pointer value is represented by the term nullptr. Use a null pointer value to indicate that a native pointer type, inner pointer, or object...

3 minutes read.

How to Reverse a String in C++ using For Loop

For Loop: We may loop through a certain section of C++ code repeatedly using the for loop. A for loop is carried out if the test expression yields a true result. The...

4 minutes read.

Palindrome using Do-while loop in C++

What is Palindrome? A palindrome is a word, number, phrase, or other sequence of letters that reads the same backward as forward, such as 101 or MOM. Like other programming languages, C++...

5 minutes read.

Advantage and disadvantage friend function C++

Friend Function: - A friend function in C++ is a function that can access the private, protected, and public members of a class. In C++, a friend function is a function that...

2 minutes read.

Difference between Exit and Return

Define Exit() At the point when a client needs to leave a program from this capability is utilized. A void return type capability calls all capabilities enrolled at the exit and ends...

3 minutes read.

Principles of Object-Oriented Programming in C++

What is Object-Oriented Programming? Object-oriented programming is about creating obejcts that represent the real-world entity . In object-oriented programming, objects are created for the class. One of the main objectives of...

5 minutes read.

Pointer to Object in C++

What is a pointer? A pointer in C++ is used to point the variable by storing the address of the variable. In C++, to print the address of the variable, we...

4 minutes read.

Data Hiding in C++

C++ : High-performance apps can be made using the cross-platform language C++. Bjarne Stroustrup created C++ as an addition to the C language. Programmers have extensive control over memory and system...

3 minutes read.

C++ Installation

Let's install C++ setup to start programming in C++. C++ setup contains C++ compiler which is required in your system. There are lots of C++ compilers available, you must choose...

1 minute read.

Vector resize() in C++

Vector resize() in C++ Vectors are called dynamic arrays and can automatically adjust their size when a component is added or deleted. This container is used for storage. The function modifies the...

3 minutes read.

Top 14 Best Free C++ IDE (Editor & Compiler) for Windows in 2024

Bjarne Stroustrup created the all-purpose object-oriented programming language C++. To develop C++ programs, there are various Integrated Development Environments (IDE) that offer prewritten code templates. These programs automatically modify the...

6 minutes read.

Octal to Decimal in C++

We need to write a system that converts octal number into equal decimal number when octal number is given as input. Let us look at an example of a program in...

2 minutes read.

C++ Keywords

In this article, we will discuss keywords in C++ with their several features and functions. What are Keywords in C++? In C++, a keyword is a reserved word that has a predefined...

4 minutes read.

Constructor Overloading

The program contains more than one constructor in a class with the same name, and different types of arguments are called constructor overloading. Calling of constructor depends on the number and types...

2 minutes read.

Backtracking Time Complexity in C++

Introduction to Backtracking Backtracking is an important part of programming languages, and with the help of backtracking, we can do many operations in an advanced data structure. For doing major operations,...

4 minutes read.