gpt4 book ai didi

统计List的Size,有必要用free()吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:02 25 4
gpt4 key购买 nike

我有一个计算链表大小的函数。当 return 之前的行排除 temp=NULL 并且我只会 free(temp) 时,我遇到了“双重释放或损坏”编译错误。当我在 free(temp) 之前添加 temp=NULL 时,代码有效。

我是否因为编译器释放了 temp 和它链接到的节点而得到双重释放或损坏? temp=NULL 是否解决了这个问题?

最后,这么小的函数有必要使用free()吗?

typedef struct node{
int a, b;
struct node *next;
}Node;

typedef struct list{
Node* head;
Node* tail;
}List;

int list_size(List *q){
Node *temp;
int i = 1;
if(q->tail == NULL && q->head == NULL){
return 0;
}
else{
temp = q->head;
while(temp->next != NULL){
temp = temp->next;
++i;
}
temp = NULL;
free(temp);
return i;
}
}

最佳答案

你没有分配任何内存,所以你不需要释放任何内存。无论如何,如果您分配内存,则需要释放它。

需要释放的内存是动态分配的内存。文档中免费列出了动态分配内存的函数:http://en.cppreference.com/w/c/memory/free

关于统计List的Size,有必要用free()吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35722829/

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