void getFree(void *ptr) { if(ptr != NULL) { free(ptr); ptr = NULL; } return; } int main() { char *a; a=malloc(10); getFree(a); if(a==
Pointers are stored as integers somewhere in memory.
When you do a = malloc(10);, a has some value, say 0x1.
a = malloc(10);
a
When you call getFree(a);, the function copies a into void *ptr.
getFree(a);
void *ptr
Now a=0x1 and ptr=0x1.
a=0x1
ptr=0x1
When you do ptr=NULL, only ptr is changed to NULL, but a is still 0x1..
ptr=NULL
ptr