Say I have declared a pointer to a struct and assign it with malloc() using this definition
typedef struct node {
int info;
struct node *next;
} NODE;
Then somewhere in the code I declared two pointers to it
NODE *node1, *node2 = NULL;
node1 = malloc(sizeof(NODE));
node2 = node1;
My question, should I use "free()" to release node2 just like people always do to node1 via free(node1). What's exactly the effect of the assignment node2 = node1;
Thanks.
When you do
node1 = malloc(sizeof(NODE));
you have something like
+-------+ +-----------------------------+ | node1 | ---> | memory for a NODE structure | +-------+ +-----------------------------+
After the assignment node2 = node1
you have instead this:
+-------+ | node1 | -\ +-------+ \ +-----------------------------+ >-> | memory for a NODE structure | +-------+ / +-----------------------------+ | node2 | -/ +-------+
In other words you have two pointers pointing to the same memory.
Attempting to call free
using either of the two pointer variable will invalidate both pointers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With