gpt4 book ai didi

c - 无法释放结构

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

我无法释放结构。我对'free(void *)'的理解是释放指针后,变量和内存地址可以重用。下面不是这种情况,

struct list {
struct list_node * head;
int size;
};
typedef struct list list;

//create
list * create_list() {
list * l = (list *) malloc(sizeof(list));
l->head = NULL;
l->size = 0;
return l;
}

int main(int argc, char const *argv[]) {

list * l = create_list();
free(l);
list * l = create_list();

return 0;
}

main.c:25:12: error: redefinition of 'l' list * l = create_list(); ^ main.c:23:12: note: previous definition is here list * l = create_list(); ^ 1 error generated.

最佳答案

您不能在同一作用域中两次声明一个变量。这就是为什么您会收到重定义错误的原因。

您的列表指针也是一个变量。您不得在主函数中重新声明 l

您的编译器已经知道它是一个list *,因此您应该删除第 19 行的 list *

另外,我认为您误解了free 的作用。它取消分配您使用 malloc 分配的内存,从而使指针地址处的内存在您的程序中不可用。你必须重新使用malloc(或者你可以直接使用realloc而不需要之前使用free)。

关于c - 无法释放结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55255574/

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