2013-10-25 149 views
0

我需要通過一個可以容納一個字符串的動態行長度數組實現10個列。到目前爲止,我試圖通過使用intiger而不是srings來進行實驗,以簡化操作。動態分配二維數組

這是我到目前爲止的代碼:

int** pArray = (int**)malloc(10*sizeof(int*)); 
for (i = 0; i < 10; i++) 
{ 
    pArray[i] = (int*)malloc(sizeof(int)); 
} 

所以現在我知道,我創建了一個10×陣列。現在我需要動態realoc根據需要出現的每一行..

在這一點上我卡住了。任何援助將大大apprieciated

+0

如果是我,直到我知道我是多麼不分配行。只要將指針設置爲NULL,當你去訪問它,它是NULL,然後分配空間。 –

+1

[也不要施放malloc的結果。](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) – pzaenger

+0

對於矩陣分配一個向量並計算複雜索引(例如:'col * rows + row')更有效。我絕不會在你的路上這樣做。 (分配的價格是多少?更改內存上下文的價格是多少(將數據重新加載到緩存中)等等) – Naszta

回答

1

比重新分配更好的方法是在知道需要多少內存後分配行。

char ** pArray = (char **)malloc(10*sizeof(char*)); 
for(i=0;i<10;i++) 
{ 
    pArray[i] = NULL; 
} 

而當你需要分配大小的「我」行「N」,做

pArray[i] = (char*)malloc(n*sizeof(char)); 
+0

實際上,我正在實施一個哈希算法,如果發生碰撞,我將存儲在同一行,但不同coloumn,這是我的想法。我不知道它是否正確 – eromlig