c - 如何释放链表?

标签 c linked-list malloc free

我在一个函数中创建了一个链表,在程序的其余部分我使用指针访问该链表。现在我如何在我的程序结束时释放这个链表?我是简单地使用 free(CircuitData) 还是必须遍历释放每个节点的列表?写这个我在想释放每个节点是显而易见的答案......

附带说明一下,我还想问一下如何确定程序期间分配的所有内存是否已正确释放?

 ListNodeType *CircuitData;
 CircuitData = NULL;
 ReadFile(&CircuitData, &numEl, &numNodes);


void ReadFile(ListNodeType **CircuitData, int *numEl, int *numNodes){

    ListNodeType *newPtr, *tempPtr;
    newPtr = malloc(sizeof(ListNodeType));
    *CircuitData = newPtr;
    newPtr->nextPtr = NULL;

    //MORE CODE

最佳答案

我会想到这样的事情:

struct node
{
    int data;
    node* next;
} *head;

void deleteAllNodes(node* start)
{
    while (start != NULL)
    { 
        node* temp = start; 
        start = start -> next;
        free(temp);
    }
}

关于c - 如何释放链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19505196/

相关文章:

c - 与 LIFO 顺序相比,按地址顺序组织空闲列表有何优势?

C - Linux 稀疏文件 : How to check if file is sparse and print 0-filled disk blocks

c - 计算机如何区分空终止符的位和整数 0?

c - 为什么 bits/libc-header-start.h 文件夹包含在 stdio.h header 中

计算链表中字符串出现的次数

java - 如何从对象中删除装饰器?

c++ - 指针牌组替换函数C++

c - 奇怪的 malloc 行为

c - 在另一个结构中分配结构的内存

c++ - 如何区分两个独立程序的文件和公共(public)文件