这是我必须动态声明结构中的数组的代码。我正在动态分配一个名为'capacity'的数组列表。在我的程序的稍后阶段,我想增加我的数组的大小并重新分配它。我该怎么做呢?
struct mystruct {
int x;
struct y **list;
};
包装器函数,用于声明结构中存在的数组
struct mystruct *mystruct_init()
{
struct mystruct *mystruct = calloc(1, sizeof(*mystruct));
// loop through and allocate memory for each element in list
mystruct->list = calloc(1, sizeof(struct y *) * mystruct->list_length);
for (int i = 0; i < capacity; i++)
mystruct->list[i] = calloc(1, sizeof(struct y));
return mystruct;
}
调用包装函数
struct mystruct *h1 = mystruct_init();
我的问题是,如何使用realloc函数来增加列表的大小(容量值的两倍)?如果有人可以帮助我,那将是非常好的。
答案 0 :(得分:1)
假设您有int oldsize
:
struct y **newlist=realloc(h1->list,oldsize*2*sizeof(struct y*));
if (!newlist) return -1;//error
h1->list=newlist;
int i;
for (i=oldsize;i<2*oldsize;i++) h1->list[i]=calloc(1,sizeof(struct y));