如何释放链表?

Ace*_*Ace 0 c malloc free linked-list

我在函数中创建了一个链表,在程序的其余部分我使用指针访问列表.现在,如何在程序结束时释放此链接列表?我是否明白使用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
Run Code Online (Sandbox Code Playgroud)

小智 6

我会想到这样的事情:

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

void deleteAllNodes(node* start)
{
    while (start != NULL)
    { 
        node* temp = start; 
        start = start -> next;
        free(temp);
    }
}
Run Code Online (Sandbox Code Playgroud)