I am trying to allocate memory for a 2 dimensional array of size declared by the user but am not quite sure how to do this. I read several forums about it to generate the code I have so far but am getting errors about have invalid types int[int] for array subscript. Any help would be appreciated THANKS.

Code:#include <iostream> #include <vector> using namespace std; void MagicSquare ( int ptr, int n ); void DisplaySquare ( int ptr, int n ); int main(void) { int order, **ptr; cout <<"This program will create a magic square of an odd order\n"; cout <<"Please enter the order number you would like:\n"; cin >> order; ptr = new int *[order]; //allocates a new array of pointers to int type for(int i=0; i<order; ++i) ptr[i]=new int[order]; //allocates space for each pointer making second dimension if (order%2==1) MagicSquare( **ptr, order ); else{ delete []ptr; cout <<"order cannot be even\n"; } DisplaySquare( **ptr, order ); } void MagicSquare ( int ptr, int n ) { int max = n * n; int i=0; int j=n/2; // start position for (int k=1; k<=max; ++k) { ptr[i][j]= k; i--; j++; if (k%n == 0) { i += 2; --j; } else { if (j==n) j -= n; else if (i<0) i += n; } } } void DisplaySquare( int ptr, int n) { for (int i=0; i<n; i++) { for (int j=0; j<n; j++) cout << ptr[i][j] << "\t"; cout << "\n\n\n\n"; } }