我通过这样的函数传递一个结构......
expandArrayofStructs(Container *container, int n)
这个容器是一个结构,该结构内部是另一种结构的数组,我将其称为内部。
我想将内部数组的大小扩大一些值,然后在扩大数组后继续我的原始函数。所以这个扩展函数不返回任何东西,它只是被调用并扩展数据并完成,程序继续使用比以前更大的新数组。
我对情况的理解是这样的,但这不能正常工作......
int expandArrayofStructs(Container *container, int n)
{
container->inner = realloc(container->inner, sizeof(inner) * 50);
^
Just a number i picked. so if i
already had an array of 50
I would be increasing by 50 here.
if(Container->inner == NULL)
//HANDLE ERROR IF REALLOC FAILS
//Update the container length
container->length = container->length + 50;
//For some reason the specs of the program say I need to return
//the array length which is an attribute of container
return container->length;
}
但是当我以这种方式重新分配时,我什至没有收到段错误错误:realloc(): invalid next size 0x463829
最后的数字各不相同。
不知道我做错了什么,但如果有更好的方法来动态重新分配结构数组,那么我愿意接受建议。这个特定的代码不必完全是它的样子。
唯一的规定是此函数返回类型 int 即 = 新数组长度