C语言:释放指向struct的指针的内存

Jam*_*eal 3 c malloc free struct pointers

假设我已经声明了一个指向结构的指针,并使用此定义为malloc()赋值

typedef struct node {
    int info;
    struct node *next;
} NODE;
Run Code Online (Sandbox Code Playgroud)

然后在代码中的某个地方我声明了两个指针

NODE *node1, *node2 = NULL;

node1 = malloc(sizeof(NODE));
node2 = node1;
Run Code Online (Sandbox Code Playgroud)

我的问题是,我应该使用"free()"来释放node2,就像人们总是通过free(node1)对node1做的那样.赋值node2 = node1的确切影响是什么?

谢谢.

Som*_*ude 6

当你这样做

node1 = malloc(sizeof(NODE));
Run Code Online (Sandbox Code Playgroud)

你有类似的东西

+-------+      +-----------------------------+
| node1 | ---> | memory for a NODE structure |
+-------+      +-----------------------------+

在完成任务后,node2 = node1你有了这个:

+-------+
| node1 | -\
+-------+   \    +-----------------------------+
             >-> | memory for a NODE structure |
+-------+   /    +-----------------------------+
| node2 | -/
+-------+

换句话说,你有两个指向同一个内存的指针.

尝试free使用两个指针变量之一进行调用将使两个指针无效.