我正在使用 realloc 在运行时在动态数组中分配内存。首先,我用 calloc 分配了一个内存,其 sizeof 是一个随机整数 a。在我的程序中,我采用了 a=2。之后我想存储生成的 14 个随机值,所以我必须使用 realloc 调整内存大小。我在 for 循环中做同样的事情。对于 1 次迭代,realloc 可以工作,但在该大小不会增加之后,会出现“堆损坏”错误。我无法理解这个问题。如果可以的话,请帮助我,了解问题发生在哪里以及如何解决它。非常感谢。下面是我的代码:
j=j*a; //a=3
numbers = (int*) calloc(b, j); //b=14, no of elements I want to store
printf("Address:%p\n",numbers);
if (numbers == NULL)
{
printf("No Memory Allocated\n");
}
else
{
printf("Initial array size: %d elements\n", a);
printf("Adding %d elements\n", b);
}
srand( (unsigned) time( NULL ) );
for(count = 1; count <= b ; count++)
{
if(i <= j)
{
numbers[count] = rand() % 100 + 1;
printf( "Adding Value:%3d Address%p\n", numbers[count],numbers[count] );
i++;
}
if (i > j)
{
printf("Increasing array size from %d bytes to %d bytes\n",j,j*a);
j=j*a;
numbers = (int*) realloc(numbers,j);
printf("Address:%p\n",numbers);
if(numbers == NULL)
{
printf("No Memory allocated\n");
}
}
}
free(numbers);
return 0;
}