"gata"が導入されるまで読み込まれた単語の文字列を記憶する二元配列を動的に作成する関数があります。二次元配列の動的割り当て
問題は、それがクラッシュすると、私はラインが
*(*words+*dim-1) = (char*)calloc(MAX_DIM,sizeof(char));
problems.Whatの1本のラインが間違っているかもしれないと思うことでしょうか?
void read_words(char ***words,int *dim)
{
char buff[100];
*words = (char**)calloc(*dim,*dim*sizeof(char*));
while(strcmp(buff,"gata"))
{
printf("the new word : ");
scanf("%100s", buff);
if(strcmp(buff,"gata"))
{
dim++;
*words = (char**)realloc(words,*dim*sizeof(char*));
if(words == NULL)
{
printf("Memory allocation failed !\n");
exit(0);
}
*(*words+*dim-1) = (char*)calloc(MAX_DIM,sizeof(char));
strcpy(*(*words+*dim-1),buff);
}
}
}
int main()
{
char **words;
int i,dim = 0;
read_words(&words,&dim);
for (i = 0; i < dim; i++)
free(&words[i]);
free(words);
return 0;
}
です**新しく**存在しますか? – Fennekin
['malloc()'と 'C 'のファミリの戻り値をキャストしない理由についてのこのディスカッションを参照してください。](http://stackoverflow.com/q/605845/2173917)。 –
@Fennekinはnijaの編集がありましたか?私は '新しい'を見ません。 –