Lenguaje C: liberación de memoria de punteros para estructurar

Digamos que he declarado un puntero a una estructura y lo asigno con malloc () usando esta definición

typedef struct node {
    int info;
    struct node *next;
} NODE;

Luego, en algún lugar del código, le dije dos punteros

NODE *node1, *node2 = NULL;

node1 = malloc(sizeof(NODE));
node2 = node1;

Mi pregunta, ¿debería usar "free ()" para liberar el nodo2 como la gente siempre lo hace al nodo1 a través delibre (nodo1). ¿Cuál es exactamente el efecto de la tarea?nodo2 = nodo1;

Gracias.

Respuestas a la pregunta(4)

Su respuesta a la pregunta