【发布时间】:2018-05-27 06:31:15
【问题描述】:
我正在尝试创建队列库,当我实现 dequeue 方法时,抛出异常“0xC0000374:堆已损坏(参数:0x77475910)。”这只会在我已经从队列中删除一个项目之后抛出,该项目成功返回但是第一个元素没有被删除,这是我编写代码的方式:
typedef struct {
int value;
struct queue_item * next;
} queue_item;
typedef queue_item * queue;
这就是方法:
int dequeue(queue q)
{
queue fi = q;
int value = q->value;
fi = q;
q = q->next;
free(fi);
return value;
}
【问题讨论】:
-
在您未显示的代码中某处存在错误。您需要显示minimal reproducible example。顺便说一句:在 C 中参数是按值传递的,所以如果你调用
xyz = dequeue(somequeue);那么somequeue将不会被修改。这可能是你的问题。
标签: c pointers linked-list queue singly-linked-list