Dynamic Memory allocation in C++ for 1d, 2d and 3d array

#include <iostream>

#define N 10

// Dynamically Allocate Memory for 1D Array in C++
int main()
{
// dynamically allocate memory of size N
int* A = new int[N];

// assign values to allocated memory
for (int i = 0; i < N; i++)
A[i] = i + 1;

// print the 1D array
for (int i = 0; i < N; i++)
std::cout << A[i] << " "; // or *(A + i)

// deallocate memory
delete[] A;

return 0;
}

//2-Dimentional Array.
// using single pointer;

#include <iostream>

// M x N matrix
#define M 4
#define N 5

// Dynamically Allocate Memory for 2D Array in C++
int main()
{
// dynamically allocate memory of size M*N
int* A = new int[M * N];

// assign values to allocated memory
for (int i = 0; i < M; i++)
for (int j = 0; j < N; j++)
*(A + i*N + j) = rand() % 100;

// print the 2D array
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
std::cout << *(A + i*N + j) << " ";    // or (A + i*N)[j])

std::cout << std::endl;
}

// deallocate memory
delete[] A;

return 0;
}

// using double pointer.

#include <iostream>

// M x N matrix
#define M 4
#define N 5

// Dynamic Memory Allocation in C++ for 2D Array
int main()
{
// dynamically create array of pointers of size M
int** A = new int*[M];

// dynamically allocate memory of size N for each row
for (int i = 0; i < M; i++)
A[i] = new int[N];

// assign values to allocated memory
for (int i = 0; i < M; i++)
for (int j = 0; j < N; j++)
A[i][j] = rand() % 100;

// print the 2D array
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
std::cout << A[i][j] << " ";

std::cout << std::endl;
}

// deallocate memory using delete[] operator
for (int i = 0; i < M; i++)
delete[] A[i];

delete[] A;

return 0;
}


//3-Dimentional Array.
//using single pointer;

#include <iostream>

// X x Y x Z matrix
#define X 2
#define Y 3
#define Z 4

// Dynamic Memory Allocation in C++ for 3D Array
int main()
{
// dynamically allocate memory of size X*Y*Z
int* A = new int[X * Y * Z];

// assign values to allocated memory
for (int i = 0; i < X; i++)
for (int j = 0; j < Y; j++)
for (int k = 0; k < Z; k++)
*(A + i*Y*Z + j*Z + k) = rand() % 100;

// print the 3D array
for (int i = 0; i < X; i++)
{
for (int j = 0; j < Y; j++)
{
for (int k = 0; k < Z; k++)
std::cout << *(A + i*Y*Z + j*Z + k) << " ";

std::cout << std::endl;
}
std::cout << std::endl;
}

// deallocate memory
delete[] A;

return 0;
}

// using Triple pointer.

#include <iostream>

// X x Y x Z matrix
#define X 2
#define Y 3
#define Z 4

// Dynamically Allocate Memory for 3D Array in C++
int main()
{
int*** A = new int**[X];

for (int i = 0; i < X; i++)
{
A[i] = new int*[Y];

for (int j = 0; j < Y; j++)
A[i][j] = new int[Z];
}

// assign values to allocated memory
for (int i = 0; i < X; i++)
for (int j = 0; j < Y; j++)
for (int k = 0; k < Z; k++)
A[i][j][k] = rand() % 100;

// print the 3D array
for (int i = 0; i < X; i++)
{
for (int j = 0; j < Y; j++)
{
for (int k = 0; k < Z; k++)
std::cout << A[i][j][k] << " ";

std::cout << std::endl;
    }
std::cout << std::endl;
}

// deallocate memory
for (int i = 0; i < X; i++)
{
for (int j = 0; j < Y; j++)
delete[] A[i][j];

delete[] A[i];
}

delete[] A;

return 0;
}

Comments

Popular posts from this blog

Write Your Own String Class:

Printing the odd and even no using Pthread