我想动态地重新分配一个结构数组的内存(实际上是一个数组,每个结构都是2个,但是这里为了简单起见,这里是1),这个结构正在被读取/传输到一个文件或者被用户输入。Realloc一个结构数组
typedef Struct
{
char surname[21];
char firstname[21];
char username[21];
...
} User;
...在main():
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,在运行Quincy(MinGW GUI)的4GB Core i5上。
'INT growArray(用户user_array,INT大小)'?你错过了一个'*'吗? – kennytm 2011-05-29 19:41:25
发布实际代码 - 这不会编译 – 2011-05-29 19:41:59
@KennyTM我认为他错过了其中两个。 – cnicutar 2011-05-29 19:47:23