【发布时间】:2017-04-07 05:15:47
【问题描述】:
假设我已经声明了一个指向结构的指针并使用这个定义用 malloc() 分配它
typedef struct node {
int info;
struct node *next;
} NODE;
然后在代码的某处我声明了两个指向它的指针
NODE *node1, *node2 = NULL;
node1 = malloc(sizeof(NODE));
node2 = node1;
我的问题,我是否应该像人们总是通过 free(node1) 那样使用“free()”来释放 node2。赋值的具体效果是什么node2 = node1;
谢谢。
【问题讨论】:
-
node1 是 node2。只释放其中一个,不要同时释放,否则会崩溃。
-
free只知道地址。它不知道你有什么变量,也不关心哪个指向哪个内存地址 -
@Jean-FrançoisFabre。所以你说的是我也可以通过 free(node2) 释放 node1,不是吗?
标签: c pointers struct malloc free