I have a pointer to int, and after I call free, I see that only the first two elements get freed, the rest remain the same. Can anybody explain?
int main() {
int* a = (int*)malloc(10*sizeof(int));
a[0] = 12;
a[1] = 15;
a[2] = 100;
a[3] = 101;
a[4] = 102;
a[5] = 103;
a[6] = 109;
a[7] = 999;
printf("%d %d %d %d %d %d %d %d\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7]);
free(a);
printf("Done freeing.\n");
printf("%d %d %d %d %d %d %d %d\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7]);
return 0;
}
Output: (sorry for putting all the output in one line)
12 15 100 101 102 103 109 999 Done freeing. 0 0 100 101 102 103 109 999