Я пытаюсь динамически перераспределить память для массива структур (на самом деле это массив каждой из 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;
}
К сожалению, realloc никогда не работает. Обе структуры занимают всего около 200 байт на экземпляр, и установка начального размера, равного 10, будет работать нормально, поэтому должно быть что-то не так с тем, как я пытаюсь использовать realloc.
Система - Win 7 64, на Core i5 с 4 ГБ, работающая с Quincy (графический интерфейс MinGW).