usage of free in double linked lists
can i free a pointer which i got through assignment of some other pointer
suppose p and q are pointers of same type then
after doing p=q;
is it necessary to use free(p) and free(q) or only one is enough
Thanks in advance
|
Mentor
|
![]() |
| 26Mar2009,05:53 | #2 |
|
You free the memory pointed to by the pointer, not the pointer itself. There is no magic connection between a pointer and the memory it points to, so
Code:
char *x=malloc(20); char *y=x; free(y); If you want to free the pointer itself then you need to make the variable of type pointer to pointer to thing, not just pointer to thing: Code:
char **x=malloc(sizeof(char*)); *x=malloc(20); char *y=*x; free(*y); // frees the 20 bytes free(y); // frees the pointer Code:
char *x=malloc(20); char *y=x; free(y); // OK, the 20 bytes are deallocated now free(x); // likely to crash your program |

