重新分配一个字符串数组

时间:2013-03-20 00:42:19

标签: c arrays 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

我的问题是,如果我想重新分配str[0]大小8,我是否需要像这样重新分配strstr[0]

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

这是对的吗?

2 个答案:

答案 0 :(得分:3)

当您要添加字符串(更改字符串数)时,您realloc主数组。如果要更改字符串的长度,则realloc个别字符串。

因此,如果您想更改字符串的缓冲区大小,则只有realloc str[0]

答案 1 :(得分:2)

不,您不需要重新分配字符串数组以延长索引零处的字符串。你所需要的只是

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