gpt4 book ai didi

c - 使用 realloc 扩展结构数组

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:49 26 4
gpt4 key购买 nike

我正在通过这样的函数传递结构...

expandArrayofStructs(Container *container, int n)

这个容器是一个结构,该结构内部是另一种结构的数组,我将其称为内部结构。

我想将 inner 数组的大小扩展一些值,然后在扩展数组后继续我原来的函数。所以这个扩展函数不返回任何东西,它只是被调用并扩展数据并完成,程序继续使用比以前更大的新数组。

我对这种情况的理解是这样的,但这不能正常工作......

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(): 下一个大小无效 0x463829

末尾的数字各不相同。

不确定我做错了什么,但如果有更好的方法动态重新分配结构数组,那么我愿意接受建议。这个特定的代码不必完全是它的样子。

唯一的规定是这个函数返回的类型是 int = 新的数组长度

最佳答案

发生此错误是因为您没有“重新分配”更多内存。您正在分配相同的大小。

要修复它,只需分配您需要的总大小:

container->inner = realloc(container->inner, sizeof(inner) * (50 + container->length);

关于c - 使用 realloc 扩展结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17122795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com