在C

时间:2016-10-09 02:18:06

标签: c visual-studio doubly-linked-list

在下面的代码中,这个函数的目的是传递一个双向链表,它是逐个获取列表中的节点并释放它们。但每次我尝试调试我的程序。它给了我这样的信息:"抛出异常:读取访问冲突。 currNode是nullptr。"我无法在我的代码中理解这一点,我做错了什么或者错过了造成这种情况的原因?

void DListDestruct(DList* list) {
DListNode* currNode;
DListNode* next;

currNode = (DListNode*)malloc(sizeof(DListNode));
currNode = list->head;

if (currNode == NULL) {
    return;
}


while (list->head != NULL) {

    next = currNode->next;
    free(currNode);
    currNode = (DListNode*)malloc(sizeof(DListNode));
    currNode = next;

}

list->head = NULL;

return;
}

1 个答案:

答案 0 :(得分:1)

你的循环正在测试list->head,循环的主体永远不会改变。由于currNode是被释放的,这可能是您应该检查的内容。