DEV Community

Cover image for Dynamic Memory Allocation for NxM (2D) Array Using Pointer | C++
Yash Desai
Yash Desai

Posted on

Dynamic Memory Allocation for NxM (2D) Array Using Pointer | C++

Define class MxN_matrix

#include <iostream>
using namespace std;

class MxN_Matrix
{
    int row, col;
    int *Matrix;

public:
    MxN_Matrix()
    {
        row = 0;
        col = 0;
    }
    ~MxN_Matrix()
    {
        // deallocate memory
        delete[] Matrix;
    }
    void create(int row, int col);

    void print();
};
Enter fullscreen mode Exit fullscreen mode

void create(int row, int col)

void MxN_Matrix::create(int row, int col)
{
    this->row = row;
    this->col = col;

    // Dynamically allocate memory of size row*col
    Matrix = new int[row * col];

    // assign values to allocated memory
    for (int i = 0; i < row; i++)
        for (int j = 0; j < col; j++)
        {
            cout << "row = " << i << " col = " << j << ": ";
            cin >> *(Matrix + i * col + j);
        }
}
Enter fullscreen mode Exit fullscreen mode

void print()

void MxN_Matrix::print()
{
    cout << "\nMatrix" << endl;
    // print the matrix
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
            cout << *(Matrix + i * col + j) << "\t"; // or (Matrix + i*col)[j])

        cout << endl;
    }
}
Enter fullscreen mode Exit fullscreen mode

int main()

int main()
{
    MxN_Matrix *matrix = new MxN_Matrix();

    matrix->create(2, 3);

    matrix->print();

    delete matrix; // deallocate memory

    return 0;
}
Enter fullscreen mode Exit fullscreen mode

Also available on YouTube

Discussion (1)

Collapse
pgradot profile image
Pierre Gradot

You should stop calling new / delete by hand and starting using smart pointers instead: en.cppreference.com/w/cpp/memory