gpt4 book ai didi

c - 如果我复制一个指针然后释放它,原始数据会消失吗?

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

我正在尝试用 C 语言创建一个链表,我想知道一旦我释放 cursor 会发生什么。

cursor 指向与 head 相同的结构,所以当我释放 cursor 时,它也会释放任何 head 指向什么?

static struct node* head = NULL;

int length()
{
int counter = 0;

struct node *cursor = head;

if(cursor)
{
while((*cursor).next)
{
cursor = (*cursor).next;
counter++;
}
}

free(cursor);

return counter;
}

最佳答案

正如我从您的代码中看到的,一旦您删除 cursor,列表中的最后一个元素也将被删除。可能是,您真的不需要在 length 方法中调用 free,因为 length 等方法不应该修改正在工作的数据在。我想提一下,cursor 是一个简单的指针,因此 cursor 的内存分配在堆栈上,并在方法完成后自动释放。它不是在堆上分配的对象,它只是指针,因此您不应该关心任何内存释放。还要注意在取消引用之前检查 cursor 是否不是 NULL

关于c - 如果我复制一个指针然后释放它,原始数据会消失吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098453/

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