Estou tentando adicionar memória do meu array dinâmico usando realloc. Mas no meu código, realloc é memória extra adicionada ao array. Suponha que inicialmente eu queira criar um array de 5 itens, então eu quero adicionar mais 3 itens, então o comprimento total do array deve ser 8. Mas ele está mostrando mais do que o comprimento alocado, por quê? Eu anexei a saída também.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, i, added_data;
int *data;
printf("Enter the total number of elements: ");
scanf("%d", &n);
data = (int *)calloc(n, sizeof(int));
if (data == NULL)
{
printf("Error!!! memory not allocated.");
exit(0);
}
for (i = 0; i < n; i++)
{
printf("Enter number %d: ", i + 1);
scanf("%d", data + i);
}
printf("Enter number of elements to add: ");
scanf("%d", &added_data);
if(added_data > 0)
{
data = realloc(data, added_data * sizeof(int));
for (i=0; i < added_data; i++)
{
//n++;
printf("Enter number %d: ", i + 1);
scanf("%d", data + n);
n++;
}
}
int new_length = n + added_data;
printf("\nnew length of array: %d", new_length);
printf("\n");
for(i=0;i<new_length;i++)
{
printf("%d\n", data[i]);
}
printf("\n");
free(data);
return 0;
}
Saída::
Enter the total number of elements: 5
Enter number 1: 1
Enter number 2: 2
Enter number 3: 3
Enter number 4: 4
Enter number 5: 5
Enter number of elements to add: 3
Enter number 1: 55
Enter number 2: 99
Enter number 3: 88
new length of array: 11
1
2
3
4
5
55
99
88
10053856
0
10027344