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的确切影响是什么?
谢谢.
当你这样做
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使用两个指针变量之一进行调用将使两个指针无效.