我想動態地重新分配一個結構數組的內存(實際上是一個數組,每個結構都是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