繁体   English   中英

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

[英]Why does my C Program crash when I try to delete a node out of a singe linked list

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

*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 指向已删除的 memory。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM