-2
该函数在下面的代码中传递双向链表的目的是逐个获取列表中的节点并释放它们。但每次我尝试调试我的程序。它给了我这个信息:“抛出的异常:读取访问冲突currNode是nullptr。”我在代码中遇到了麻烦,我在做什么错误或缺少导致这种情况?销毁C中的双链表List
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;
}
'malloc'不是必需的。和'while(list-> head!= NULL){' - >'while(currNode!= NULL){' – BLUEPIXY
您的连续行'currNode =(DListNode *)malloc(sizeof(DListNode));'和 ' currNode = list-> head;'泄漏内存。不要分配并覆盖指向已分配空间的指针。 –
“* ... currNode为nullptr。*”听起来像C++。 – alk