在下面的代码中,这个函数的目的是传递一个双向链表,它是逐个获取列表中的节点并释放它们。但每次我尝试调试我的程序。它给了我这样的信息:"抛出异常:读取访问冲突。 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;
}
答案 0 :(得分:1)
你的循环正在测试list->head
,循环的主体永远不会改变。由于currNode
是被释放的,这可能是您应该检查的内容。