void insert_queue (queue_ref queue, queue_item_t item) {
queuenode_ref new = malloc(sizeof (struct queuenode));
assert(new != NULL);
new->item = item;
new->link = NULL;
if (!isempty_queue(queue)) {
queue->rear->link = new;
queue->rear = new;
} else {
queue->front = new;
queue->rear = new;
}
}
我在这个函数中修复内存泄漏很难。我试图在函数结束时免费(新),但它仍不能解决泄漏问题。我应该在哪里发表这个声明?难以修复内存泄漏
要修复由于'malloc'造成的内存泄漏,只需跟踪所有'malloc'并在使用后释放所有内存'malloc'。这意味着如果'免费(新)'不能解决你的问题,那么问题就在别处。请解释其余的代码。 –
@MadHatter:所以** new **是在if-else语句之后使用的,是不是我应该放置free(new)的地方? –
是什么让你说这是内存泄漏?通常当你没有正确地释放内存时会发生泄漏 - 这是你在队列中创建一个项目,这没关系。你如何从队列中删除东西 - 我怀疑这是问题所在。 – Floris