ダブルポインターを使用して、特定の文の単語を動的 2-D 配列に格納する動的配列を作成しようとしていますが、3 つ以上の単語を指定すると、次のエラーが発生します。
*** glibc detected *** ./a.out: realloc(): invalid next size: 0x000000000255a030 ***
以下の関連コード:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char **ptr=NULL;
char letter;
int ptrsize=1, wordsize=1;
ptr=malloc(ptrsize*sizeof(char *));
ptr[ptrsize]=(char *)malloc(wordsize*sizeof(char));
do
{
letter=getchar();
while ((letter!=' ')&&(letter!='\n'))
{
ptr[ptrsize][wordsize]=letter;
*ptr= realloc(*ptr,wordsize+1);
wordsize++;
letter=getchar();
}
ptrsize++;
ptr = realloc(ptr,ptrsize*sizeof(char));
wordsize=1;
ptr[ptrsize]=malloc(wordsize*sizeof(char));
}
while (letter!='\n');
return 0;
}
ダブルポインターの malloc と realloc を変更することで文のサイズを大きくすることができましたが、まだ確実な解決策は見つかりませんでした。前もって感謝します。