×

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++ Enumeration

C++ Enumeration In C++, Enum is a special data type that contains some fixed sets of components that have various applications in the programming. Enum works fine with fixed constant sets...

3 minutes read.

Unary Operators in C++

Unary operators in C++ Unary operator: is operations that function to produce a new value on a single operand. a) unary minus: A minus operator modifies the argument's symbol. A positive number...

3 minutes read.

C++ Continue in Do-while loop

Continue statement: Inside the loop, the continue statement is used to control the loop. C++ utilizes the continue keyword to implement the continue statement, which transfers the program's flow at the start...

4 minutes read.

Diamond Pattern using While-loop in C++

What is while Loop? A while loop or while statement repeats all code of its body as long as a specific condition is satisfied. The loop ends if or when the...

5 minutes read.

Quick Sort in C++

Quick sort is an efficient, in-place, comparison-based sorting algorithm that uses a divide-and-conquer strategy to sort an array or list of elements. First a pivot element is selected from the...

4 minutes read.

Initialization of Data Members

In this tutorial, we'll look at how to initialise static member variables in C++. Static members, such as functions or variables, can be added to C++ classes. After declaring the...

1 minute read.

Splitting a string in C++

Any programming language must have the ability to work with string data. For programming needs, we sometimes need to separate string data. Many computer languages provide a split() method that...

4 minutes read.

How to run program in turbo c++

What is Turbo C++? Turbo c++ is an integrated development environment (IDE) and a compiler to run C++ code. Turbo c++ helps to link the header files with the main code....

2 minutes read.

C++ Program to Implement Shell Sort

    C++ Program to Implement Shell Sort shell sort is basically an Insertion Sort variant. In the insertion sort, we only transfer elements ahead of one location. Many movements are involved...

2 minutes read.

Armstrong Number Program in C++

Let's first define Armstrong number before writing the C++ program to check whether the number is Armstrong or not. The sum of the cubes of its digits is equal to the...

2 minutes read.

C++ int into String

Data type conversion is a standard editing process. You may need to convert variable from one type of data to another in a variety of situations. There are two ways...

5 minutes read.

Reserved Keywords in C++

What are reserved keywords in C++? There are a few keywords that cannot be used as identifiers as those words are reserved for some other purposes, such keywords are called reserved...

15 minutes read.

Find the Size of Array in C/C++ without using sizeof() function

We know that arrays in C/C++ are the most essential data structures as they have the ability to hold the data in a continuous manner line where the address of...

3 minutes read.

C++ Functions

In other programming languages, a function is referred to as a process or a subroutine. We can design functions to execute any task. A function can be used repeatedly. It...

5 minutes read.

Virtual base class in C++

Consider in a C++ program, there are 4 classes named class A, class B, class C, and class D. If class B and class c inherit properties from class A....

3 minutes read.

std::min in C++

std::min in C++ std::min is specified in the program code, used to calculate the lowest amount that has been transferred. When there's more of someone who returns first of them. It's used...

2 minutes read.

C++ Continue in for loop

Continue statement: Inside the loop, the continue statement is used to control the loop. C++ utilizes the continue keyword to implement the continue statement, which transfers the program's flow at the start...

4 minutes read.

Bits stdc++.h in C++

<bits/stdc++.h> in C++ In essence, it is a header file that contains all the standard libraries. It makes sense to use this file in programming competitions to speed up work, especially...

2 minutes read.

How to create a library in C++

Before going on to the creation of a library, let’s understand its meaning. What is a library? In simple words, a library is a collection of numerous functions, methods, classes, header files...

7 minutes read.

Multiset in C++

Introduction Multisets are part of the C++ STL, or Standard Template Library. In C++, a multiset is a set of associative containers that hold ordered items. Items in a multiset can...

10 minutes read.