Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   usage of free in double linked lists? (http://www.go4expert.com/forums/usage-free-double-linked-lists-t16668/)

gaiety 25Mar2009 21:51

usage of free in double linked lists?
 
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

xpi0t0s 26Mar2009 05:53

Re: usage of free in double linked lists?
 
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



All times are GMT +5.5. The time now is 03:43.