ファイルとの間で読み込んだり、ユーザーが入力したりする構造体の配列 (実際には 2 つの構造体の配列ですが、簡単にするために 1 つ含まれています) のメモリを動的に再割り当てしようとしています。
typedef Struct
{
char surname[21];
char firstname[21];
char username[21];
...
} User;
...メイン()で:
int size = 0; /* stores no. of structs */
User* user_array = (User *) calloc(1, sizeof(User));
if(user_array == NULL)
{
printf("Cannot allocate initial memory for data\n");
exit(1);
}
else
size++;
次に、必要に応じて関数呼び出しを使用して配列を増やしようとしています。
int growArray(User user_array*, int size)
{
User *temp;
size++;
temp = (User *) realloc(user_array, (size * sizeof(User));
if(temp == NULL)
{
printf("Cannot allocate more memory.\n");
exit(1);
}
else
user_array = temp;
return size;
}
残念ながら、再割り当ては機能しません。どちらの構造体もインスタンスあたり約 200 バイトしかなく、初期サイズを 10 に設定すると問題なく動作するため、realloc を使用しようとしている方法に問題があるはずです。
システムは Win 7 64 で、4GB の Core i5 で、Quincy (MinGW GUI) を実行しています。