I'm trying to generate and solve an NxN odd-numbered magic square through dynamic memory allocation but whenever I run the code, it displays nothing on the terminal and the programme ends. I reckon it has something to do with the dynamic allocation of the 2D array, as when I make a normal NxN array with a constant size, the programme runs fine. I'd appreciate any help regarding this!
#include<bits/stdc++.h>
#include<cmath>
using namespace std;
void calcuateMagicSquare(int N)
{
    int **Array;
    Array=new int*[N];
        for(int i=0; i<N; i++)
        {
            Array[i]=new int[N];
        }
        memset(Array, 0, sizeof(Array));
    int nSquare=N*N;
    int i=N/2;
    int j=N-1;
        for(int k=1; k<=nSquare;)
        {
            if(i==-1 && j==N)
            {
                j=N-2;
                i=0;
            }
            else
            {
                if(j==N)
                {
                    j=0;
                }
                if(i<0)
                {
                    i=N-1;
                }
            }
            if(Array[i][j])
            {
                j=j-2;
                i++;
                continue;
            }
            else
            {
                Array[i][j]=k++;
            }
            j++;
            i--;
        }
    int SolutionMagicSquare=N*(N*N+1)/2;
        cout << "Solution of the magic Square: " << SolutionMagicSquare << endl;
        cout << "MAGIC SQUARE: \n" << endl;
        for(int i=0; i<N; i++)
        {
            for(int j=0; j<N; j++)
            {
                cout << setw(4) << Array[i][j] << " ";
                cout << endl;
            }
        }
}
int main()
{
    int N;
        cout << "Please enter the dimension of the magic square:" << endl;
        cin >> N;
        calcuateMagicSquare(N);
}
 
    