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
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); is perfectly valid (but watch out because x is no longer pointing to valid memory). 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 You must not free the same memory twice Code: char *x=malloc(20); char *y=x; free(y); // OK, the 20 bytes are deallocated now free(x); // likely to crash your program