2013-10-25 105 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