2013-10-28 39 views
0

我必須創建一個大矩陣(即10,000x10,000)與脊柱作爲浮子指針數組:與動態數組大矩陣

typedef float* DynamicMatrix[MAT_SIZE]; 
DynamicMatrix matDyn; 

現在我必須分配行和它們初始化到零。

// allocate rows and initialize to 0 
    for (r = 0; r < MAT_SIZE; r++) { 
     matDyn[r] = new float[MAT_SIZE]; 
     for (c = 0; c < MAT_SIZE; c++) { 
      matDyn[r][c] = 0; 
     } 
    } 

我的分配和初始化是否正確?

按照上面的方法分配一個數組和按照像float float DynamicMatrix [10,000] [10,000]這樣的方式,有什麼區別?

+0

是的,他們是。你的問題是什麼? – Raptor

+0

@JosuéMolina按照我上面的方式分配一個數組和在浮動DynamicMatrix [10,000] [10,000]之類的東西之間有什麼區別? – tmacnadidas

+0

不同之處在於前者允許創建鋸齒狀數組,而後者不會(這是因爲前者是動態分配的,而後者不是)。 – Raptor

回答

0

聲明

float DynamicMatrix[10000][10000]; 

聲明的堆棧上相連存儲 10000×10000浮動。這可能是您的機器可能無法在一個塊中完成的高難度訂單。對於大多數具有4字節浮點數的機器來說,可以處理400 MB數據。

另一方面,在向量指針數組的方法中,每行數據分別分配在堆上。這對分配者來說可能更容易完成。另一方面,連續存儲在訪問方面可以非常快。