我正在尝试为正在从文件读取/向文件读取或由用户输入的结构数组(实际上是 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,在具有 4GB 的 Core i5 上,运行 Quincy(MinGW GUI)。