2013-03-20 44 views
1

目前,我在realloc數組字符串中存在一些混淆。如果我有這樣的:realloc字符串數組

char** str = (char**)malloc(100*sizeof(char*)); 
str[0] = (char*)malloc(sizeof(char)*7); //allocate a space for string size 7 
//some other code that make the array full 

我的問題是,如果我想的realloc str[0]大小8,我需要的realloc都strstr[0]這樣的:

str = (char**)realloc(str,sizeof(char*)*101); 
str[0] = (char*)realloc(str[0],sizeof(char)*8); 

這是正確的嗎?

回答

3

,當你想添加一個字符串(改變數量的字符串)您realloc主陣列。你realloc個人字符串,當你想改變字符串的長度

因此,只有reallocstr[0]如果你想改變字符串的緩衝區大小。

+0

好的。 thx人。我知道了 :) – 2013-03-20 00:48:54

2

不,您不需要重新分配字符串數組來延長索引爲零的字符串。所有你需要的是

str[0] = (char*)realloc(str[0],sizeof(char)*8); 
+0

爲什麼我只需要重新分配str [0]?我想如果我想增加str [0]的大小,而str已經滿了,我必須重新分配整個事情。那麼,我什麼時候需要重新分配str? thx – 2013-03-20 00:46:47

+0

'str'數組包含字符串指針 - 全部100個。單獨的字符串分開分配;指向這些字符串的指針存儲在'str'內。如果你需要超過100個字符串,你需要'重新分配(')'str';如果你需要增加一個字符串的長度,你可以使用'realloc()'str [i]'。 – dasblinkenlight 2013-03-20 00:58:03