How to deallocate array in c++: In the previous article, we have discussed about C++ : How to split a string using String and character as Delimiter?. Let us learn how to Allocate and Deallocate 2D Arrays Dynamically in C++ Program.
Allocating and Deallocating 2D Arrays Dynamically in C++
C++ 2d array dynamic: In this article, we are going to see how we can allocate and deallocate 2D arrays dynamically by using new-delete(heap) and malloc-free combinations .
Both will have a common approach i.e.
- 2D array of size [r][c]
- An pointer array of int assigned to int** ptr.
- Then the entire pointer array is traversed through and the memory is allocated on the heap of size col.
Allocating 2D arrays using new-delete method :
2d array c++ dynamic: We can allocate and deallocate memory by using new( )
and delete[ ]
.
#include <iostream> #include <stdlib.h> int **twoDimenArrayUsingNew(int r, int c) { int **ptr = new int *[r]; for (int i = 0; i< r; i++) { ptr[i] = new int[c]; } return ptr; } void deleteTwoDimenArrayUsingDelete(int **ptr, int r, int c) { for (int i = 0; i < r; i++) { delete[] ptr[i]; } delete[] ptr; } //Function to assign values and call the new and delete void heapNew() { int r = 2, c = 3; int **ptr = twoDimenArrayUsingNew(r, c); ptr[0][0] = 1; ptr[0][1] = 2; ptr[0][2] = 3; ptr[1][0] = 4; ptr[1][1] = 5; ptr[1][2] = 6; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { std::cout << ptr[i][j] << " , "; } std::cout << std::endl; } deleteTwoDimenArrayUsingDelete(ptr, r, c); } int main() { //Allocating the memory on heap using New and delete heapNew(); return 0; }
Output : 1 , 2 , 3 , 4 , 5 , 6 ,
Allocating 2D arrays using malloc( )-dealloc( ) method :
Dynamically allocate 2d array c++: We can allocate and deallocate memory by using malloc( )
and free( )
.
#include <iostream> #include <stdlib.h> int **twoDimenArrayUsingMalloc(int r, int c) { int **ptr = (int **)malloc(sizeof(int *) * r); for (int i = 0; i < r; i++) { ptr[i] = (int *)malloc(sizeof(int) * c); } return ptr; } void deleteTwoDimenArrayUsingFree(int **ptr, int r, int c) { for (int i = 0; i < r; i++) { free(ptr[i]); } free(ptr); } //Function to assign values and call the malloc and free void heapMalloc() { int r = 2, c = 3; int **ptr = twoDimenArrayUsingMalloc(r, c); ptr[0][0] = 1; ptr[0][1] = 2; ptr[0][2] = 3; ptr[1][0] = 4; ptr[1][1] = 5; ptr[1][2] = 6; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { std::cout << ptr[i][j] << " , "; } std::cout << std::endl; } deleteTwoDimenArrayUsingFree(ptr, r, c); } int main() { //Allocating the memory on heap using malloc and free heapMalloc(); return 0; }
Output : 1 , 2 , 3 , 4 , 5 , 6 ,
We saw how we can allocate memory using both methods.