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

いいえ、文字列の配列を再割り当てして、インデックス 0 の文字列を長くする必要はありません。あなたに必要なのは

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 に答える