目前,我在重新分配数组字符串时有些困惑。如果我有这个:
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
,我是否需要像这样重新分配str
和str[0]
:
str = (char**)realloc(str,sizeof(char*)*101);
str[0] = (char*)realloc(str[0],sizeof(char)*8);
这是对的吗?
答案 0 :(得分:3)
当您要添加字符串(更改字符串数)时,您realloc
主数组。如果要更改字符串的长度,则realloc
个别字符串。
因此,如果您想更改字符串的缓冲区大小,则只有realloc
str[0]
。
答案 1 :(得分:2)
不,您不需要重新分配字符串数组以延长索引零处的字符串。你所需要的只是
str[0] = (char*)realloc(str[0],sizeof(char)*8);