void insert_queue (queue *this, queue_item_t item) {
//Inserts a new item at the end of queue.
queue_node *temp = malloc(sizeof (struct queue_node));
temp->item = item;
if (isempty_queue(this)) this->front = temp;
else this->rear->link = temp;
this->rear = temp;
free(temp);
}
queue_item_t remove_queue (queue *this) {
assert (! isempty_queue (this));
//This removes the first item from queue.
queue_item_t temp = this->front->item;
this->front = this->front->link;
return temp;
}
当我尝试释放'temp'时,我遇到了一个seg错误。我已经尝试过做一些研究,它建议取消引用temp。我不知道该怎么做。有任何想法吗? 感谢。
编辑:当我删除free(temp)时,一切正常,但是我的内存泄漏了。如果它不属于这个功能,我不知道在哪里放免费。我还添加了删除功能。应该免费进去吗?
答案 0 :(得分:1)
为什么要在free(temp)
中拨打insert_queue
?您刚刚在队列中插入了一些数据。在这里调用free
没有任何意义,因为它会使数据不可用。从队列中删除时应该释放它。
尝试删除该行。这不会导致内存泄漏。