gpt4 book ai didi

c - 在 C 中是否以这种方式释放结构?

转载 作者:太空宇宙 更新时间:2023-11-04 01:59:33 28 4
gpt4 key购买 nike

我有以下用于实现优先级队列的结构

struct q_element
{
//Declaration of struct members
int element;
int priority;
struct q_element *next_element;
};

我使用指向结构“cur”的指针从队列中的第一项开始

struct q_element* cur = start_element;

并继续移动,直到找到我要从列表中删除的那个。

while (cur->priority!=max_priority)
cur = cur->next_element;

下面这行代码真的释放了结构体吗?因为“cur”是指向结构的指针,所以我并不完全确定。

free(cur);

最佳答案

你需要传递一个指向free的指针,所以free(cur)是要走的路,假设struct本身有使用 malloc/calloc/realloc 进行分配。具体来说,如果您将 curr 分配到自动内存中(即在堆栈上),您不应该对其调用 free

看起来 q_element 是链表的一部分。释放 struct 本身不会释放它指向的其他 struct,所以如果您想free struct 连同它的尾部,你需要写一个循环。

最后,当您释放程序中某个指针指向的内存时,最好将NULL分配给您释放的指针d 以避免在访问释放的内存时出现意外的双重释放和未定义的行为。

关于c - 在 C 中是否以这种方式释放结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29056584/

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