假设我有一些数据结构,其中结构具有指向其他结构的指针,例如链表。列表中的每个元素都有一个指向列表中另一个元素的指针
struct node{
char* data;
node* next;
};
当释放分配给这个结构的内存时,我知道我需要先专门释放数据,因为我必须专门为它分配内存。但是接下来呢?它指向另一个节点,我相信释放它会释放下一个指向的实际节点。
清理时只释放整个节点是否足够,或者有什么方法可以释放指针而不释放它指向的结构?
最佳答案
这取决于您如何在内存中构建结构。任何 malloc
都必须与 free
保持平衡。一旦指向的 next
节点被释放,它就不再有效。
// create root
node* n1 = calloc(1, sizeof(node));
// create/link another node
n1->next = calloc(1, sizeof(node));
// destroy/unlink 2nd node
free(n1->next);
n1->next = NULL;
// destroy 1st node
free(n1);
关于c - 释放指向其他结构的结构中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32032030/