new matrix[N][N] failure [duplicate]

2019-06-12 12:03发布

问题:

This question already has an answer here:

  • How do I declare a 2d array in C++ using new? 22 answers

I'm having a stack overflow allocating a huge matrix on the stack (and I agree with that: it's stupid to allocate it there) and I'm writing the following code since I want to access the matrix's elements with the subscripts indices mat[x][y]

double (*mul1)[N][N];
mul1 = new double[N][N];

I'm receiving an error:

error C2440: '=' : cannot convert from 'double (*)[1000]' to 'double(*)[1000][1000]'

Why can't I allocate a bidimensional array with new?

回答1:

double *mul1[N];
for (int i=0;i<N;++i)
    mul1[i] = new double[N];

Representing a 2D array as a 1D array

Performance of 2-dimensional array vs 1-dimensional array



回答2:

You can do it like so:

int N = 10 ;
double** mul1 = new double*[N];
for(int i = 0; i < N; ++i)
   mul1[i] = new double[N];