-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