【发布时间】:2015-03-15 02:23:58
【问题描述】:
我有以下用于实现优先级队列的结构
struct q_element
{
//Declaration of struct members
int element;
int priority;
struct q_element *next_element;
};
我使用指向 struct 'cur' 的指针从队列中的第一项开始
struct q_element* cur = start_element;
并继续移动,直到找到要从列表中删除的那个。
while (cur->priority!=max_priority)
cur = cur->next_element;
下面这行代码真的释放了这个结构吗?因为 'cur' 是指向我不完全确定的结构的指针。
free(cur);
【问题讨论】:
-
如果你
malloc'dcur,那么是的,free(cur)释放它。如果你没有,那么调用free是一个错误。 -
是的,因为你可以有
struct q_element x; struct q_element *ptr = &x;等等,这将是非常不寻常但可能的,所以你必须解释如何生成列表,free(cur)只会释放那个指针,next_elements 需要自己的free()。 -
是的,我确实使用了 malloc.. 所以我没有以这种方式释放指针或其他任何东西? free 实际上释放了我给它的指针指向的结构?