Create a Two-Dimensional Array on the Heap - by Arman Sahakyan

// Returns a pointer-to-pointer to a newly created array
// of size [row : col]

int** Create2D(int row, int col)
{
     int **p = new int* [row];
     for (int j = 0; j < row; j ++)
         p[j] = new int[col];
     return p;
}

// Deletes an array pointed by 'p' that has 'row' number rows

void Delete2D(int **p, int row)
{
     for (int j = 0; j < row; j ++)
         delete [] p[j];
     delete [] p;
}

int main()
{
     int m = 3, n = 4;
     int **p = Create2D(m, n);

     // some actions with p[i][j]...

     Delete2D(p, m);
     return 0;
}