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 错误错误。我尝试做一些研究,它建议取消引用温度。我不知道该怎么做。有什么想法吗?谢谢。
编辑:当我删除free(temp(时,一切正常,但我得到内存泄漏。如果它不属于此功能,我不确定在哪里放自由。我还添加了删除功能。应该自由进入这里吗?
你为什么要用insert_queue
称呼free(temp)
?您刚刚在队列中插入了一些数据。在此处调用free
没有任何意义,因为它会使数据不可用。从队列中删除时应释放它。
尝试删除该行。这不会导致内存泄漏。