在下面的代码中,此函数的目的是传递一个双向链接列表,该功能是将列表中的节点一个接一个并将其free()接受。但是每次我尝试调试程序时。它给我以下消息:“抛出异常:读取访问冲突。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;
}

最佳答案

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

09-09 20:35