C:尝试释放节点时出现隔离错误错误


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没有任何意义,因为它会使数据不可用。从队列中删除时应释放它。

尝试删除该行。这不会导致内存泄漏。

相关内容

  • 没有找到相关文章

最新更新