Я использую realloc для выделения памяти во время выполнения в динамическом массиве. Во-первых, я выделил память с помощью calloc с размером случайного целого числа a. В моей программе я взял = 2. После этого я хочу сохранить около 14 сгенерированных случайных значений, поэтому мне нужно изменить размер памяти с помощью realloc. Я делаю то же самое в цикле. Для 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;
}