假设我已经声明了一个指向结构的指针,并使用这个定义用 malloc() 分配它
typedef struct node {
int info;
struct node *next;
} NODE;
然后在代码的某处我声明了两个指向它的指针
NODE *node1, *node2 = NULL;
node1 = malloc(sizeof(NODE));
node2 = node1;
我的问题是,我是否应该使用“free()”来释放 node2,就像人们总是通过 free(node1) 释放 node1 一样。赋值 node2 = node1 到底有什么作用?
谢谢。
最佳答案
当你做
node1 = malloc(sizeof(NODE));
你有类似的东西
+-------+ +------------------------------+
|节点 1 | ---> |节点结构的内存|
+-------+ +------------------------------+
在分配
node2 = node1
之后,您改为:+-------+
|节点 1 | -\
+-------+\+------------------------------+
>-> |节点结构的内存|
+--------------+/+------------------------------+
|节点2 | -/
+-------+
换句话说,您有两个指向同一内存的指针。
尝试使用两个指针变量中的任何一个来调用
free
都会使两个指针无效。关于C语言 : Releasing memory of pointers to struct,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40760341/