gpt4 book ai didi

c - 自由函数激活断点

转载 作者:行者123 更新时间:2023-12-04 07:22:43 26 4
gpt4 key购买 nike

我正在尝试调用 free 函数从链表中释放节点,但是每当我尝试这样做时,IDE (CLion) 都会停止程序并给我一个 SIGTRAP(跟踪/断点陷阱)。
这是链接列表:

struct node{
int score;
int index;
struct node* nextNode;
};

typedef struct node* List;
现在初始化和链接列表的函数:
List list= malloc(sizeof(List));
list->index=-1;
list->score=-10;
list->next=NULL;
min++; min--;
List temp;
for(int i=sizeGrafi-1; i>0; i--){
temp= malloc(sizeof(List));
temp->index=i;
temp->score=-10;
temp->next=list;
nodiDaVisitare=temp;
}
这是应该删除和取消分配节点的功能(为了避免无用的代码,我将
只需发布要删除的节点是头部的情况):
List removeNode(List list){
Lista temp= malloc(sizeof(List));
temp=list;
list=list->next;
free(temp);
return list;
}
我尝试查看类似的问题,但找不到我的代码有什么问题。调用 free 函数时会发生崩溃。
编辑:我按照建议删除了 typedef
typedef struct node* List;
, 将所有列表重写为 Node*,Node 定义为:
typedef struct node{
int punteggio;
int indice;
struct nodo* successivo;
}Node;
并在 malloc 中使用正确的大小(即 sizeof(Node))。
现在免费功能似乎没有任何问题。谢谢你们。

最佳答案

    Lista temp= malloc(sizeof(List));
temp=list;
list=list->next;
malloc内存并将对它的引用存储在 temp 中.然后你分配 templist .之前的值丢失。
然后您尝试释放该指针 - 因此 free 出现问题.
顺便说一句,这个功能根本没有意义。很难理解你想要达到的目标。
此外,永远不要隐藏 typedef 后面的指针s。

关于c - 自由函数激活断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68397646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com