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