2013-03-23 101 views
0

我有一個堆棧溢出在堆棧上分配一個巨大的矩陣(我同意:它是愚蠢的分配在那裏),我寫下面的代碼,因爲我要與標指數墊來訪問矩陣的元素[X] [Y]新矩陣[N] [N]失敗

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

我收到一個錯誤:

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

爲什麼我不能分配新的一個二維數組?

+0

這實際上是從問題有人鏈接爲重複略有不同,因爲(我認爲),N是在編譯時已知。你可以用'double(* mul1)[N];'來做到這一點,並且避免了在嵌套數組的鏈接問題中出現的指針間接。 (關鍵是'''''''''''''''和'new T []''''''''''返回一個指向第一個元素的指針)。或者你可以寫'unique_ptr mul1(new double [N] [N ]);'並得到自動清理。 – entheh 2013-03-23 11:28:56

回答

2

你能做到像這樣:

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