2

目前,我对重新分配数组字符串有些困惑。如果我有这个:

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]到 size 8,我是否需要重新分配两者strstr[0]就像这样:

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

它是否正确?

4

2 回答 2

3

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

str[0] = (char*)realloc(str[0],sizeof(char)*8);
于 2013-03-20T00:43:54.910 回答
3

realloc当您想要添加字符串(更改字符串的数量)时,您是主数组。realloc当您想更改该字符串的长度时,您是一个单独的字符串。

因此,仅realloc str[0]当您想更改字符串的缓冲区大小时。

于 2013-03-20T00:44:01.737 回答