使用realloc扩展大小的C动态数组错误:下一个大小无效

使用realloc扩展大小的C动态数组错误:下一个大小无效,c,arrays,dynamic,heap-memory,realloc,C,Arrays,Dynamic,Heap Memory,Realloc,我正在为学校做一个项目,下面展示了一个我试图实现的更简单的总体想法 基本上,我想做的是: -向用户询问号码(检查!) -创建一个存储这些数字的动态数组(选中!) -它将一直存储数字,直到输入终止值-999(检查!) 我的问题是: -教授说我可能不认为数组是一定大小的; -然而,他确实给出了数组大小的起点,在我的例子中是5,当输入更多的数字时,它将扩展数组(大小的两倍) -查看下面的代码,当用户输入6个数字时,动态数组将分配更多内存以补偿更多整数的空间。这部分很好用 -但是,当用户输入10个数字时

我正在为学校做一个项目,下面展示了一个我试图实现的更简单的总体想法

基本上,我想做的是: -向用户询问号码(检查!) -创建一个存储这些数字的动态数组(选中!) -它将一直存储数字,直到输入终止值-999(检查!)

我的问题是: -教授说我可能不认为数组是一定大小的; -然而,他确实给出了数组大小的起点,在我的例子中是5,当输入更多的数字时,它将扩展数组(大小的两倍)

-查看下面的代码,当用户输入6个数字时,动态数组将分配更多内存以补偿更多整数的空间。这部分很好用

-但是,当用户输入10个数字时。我希望动态数组的大小能够再次扩展并翻倍。但是,使用与上面相同的方法,这次它的大小没有翻倍,并且在编译时在linux中出现了一个错误,上面写着“realloc():无效的下一个大小:0x000000000221f0”

基本上,我尝试实现的是一个动态数组,它的起始大小为5,并根据需要为更多整数分配更多大小。 例如: 动态数组有5个整数的空间,用户输入5个整数。 数组将空间扩展为10整数,用户输入10整数,数组大小再次翻倍为20整数,以此类推。

如果有人能推荐一种方法,或者指出我的错误,我将非常感激

我花了2个小时在这里和谷歌上搜索可能的修复程序,了解malloc和realloc的功能,但到目前为止还没有找到解决方案

int count=0;
int size=5;
int *to=(int *)malloc(size*sizeof(int));



printf("Enter\n");

scanf("%d",&to[count]);

while(to[count]!=(-999))
{
    count++;
    scanf("%d",&to[count]);

if(count==5)
    {
    printf("Expanding size . . . . . .\n");
    to=(int*)realloc(to,size*sizeof(int));
    }

if(count==10) 
    {
    printf("Expanding size to 10. . . . .\n");
    to=(int*)realloc(to,(2*size)*sizeof(int));
    }

}
为什么不

if ((count%5) == 0)
{
    printf("Expanding size . . . . . .\n");
    to=realloc(to,count*2*sizeof(int));
}

检查
realloc
中的内存分配错误留给读者作为练习。

您不需要将
malloc
或(就此而言)
realloc
的返回值强制转换为scanf(“%d”,&to[count]);如果(计数==5):0)已在区域之外使用。1)
大小
尚未更新。另外,
大小
没有增加。我已经考虑了你所说的,并更新了我的代码。你说的话很有道理。我不再收到错误。!!:)展开5->10->20(不是15)非常感谢您的建议,帮助清理我的代码。请问,在这种情况下,我为什么不必为malloc或recalloc使用类型转换?什么时候打字是个好主意。谢谢我在这里找到了问题的答案。