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
