重複の可能性:
Reallocがポインターの配列のサイズを変更していません
誰かが私の間違いがどこにあるか教えてもらえますか?この関数は、から提供される文字の配列を作成する必要がありstdin
ます。関連する質問をいくつか読みましたが、複雑すぎて理解できませんでした。
char *readChar(void)
{
int c;
int len = 0;
char* parr = malloc(sizeof(char));
while((c = getchar()) != EOF)
{
++len;
int size = sizeof(char)*len;
parr = (char *) realloc(parr,size);
*(parr+size-1) = (char) c;
printf("Done! Size should be: %dB, but real size is %dB\n",size,sizeof(parr));
}
return parr;
}
出力:
終わり!サイズは1Bである必要がありますが、実際のサイズは8Bです。サイズは2Bである必要がありますが、実際のサイズは8Bです。サイズは3Bである必要がありますが、実際のサイズは8Bです。サイズは4Bである必要がありますが、実際のサイズは8Bです。