在下面的代码中,此函数的目的是传递一个双向链接列表,该功能是将列表中的节点一个接一个并将其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
是释放的内容,因此可能应该检查该内容。