为什么当我试图从单个链表中删除一个节点时,我的C程序会崩溃



我目前正在用C语言创建一个程序,它基本上是一个链表中的链表。内部列表是字符,外部列表是单词。不幸的是,我在删除一些外部节点(单词(和释放它们的内存方面遇到了问题。我的程序不断崩溃,我不知道为什么。编译器不会给我任何警告或错误,我已经找了好几个小时的修复程序了。任何可以查看代码的人都将获得任何帮助!谢谢

*void deleteWord (Node* Node, int index){
int counter = 0;
if (Node == NULL)
return;
while (Node->next != NULL && counter != (index - 1)){
Node = Node->next;
counter++;
}
struct node* wordTemp = Node->next;
//Node->next = Node->next->next;
while (wordTemp->word != NULL){
InnerNode* letterTemp = wordTemp->word->next;
free(wordTemp->word);
wordTemp->word = letterTemp;
}
free(wordTemp);
return;
}

似乎您正在释放Node->next(存储在wordTemp中(,而不重新分配它,本质上破坏了链表中的链接,所以现在Node->next指向一个已删除的内存。

最新更新