在这个函数中我需要返回AND删除一个char值(释放分配的内存)。 这个功能有什么问题?首先返回空闲char值c
char* pqueue_poll(PrioQueue *queue) {
if (queue->root == NULL) {
return "NULL";
}
else {
char* name = (char *) malloc(sizeof(char)*10);
q_elem *temp = queue->root;
name = temp->name;
queue->root = queue->root->next;
return name;
free(temp);
free(&temp->name);
}
}
我尝试先释放并返回它,但没有结果,我与valgrind有一些错误。 我也有一个单独的函数(不删除),返回我想回到这里删除
你如何期望从函数返回后释放东西? – John3136
第一次免费并且返回也不起作用 – Dmitry
你打电话'free(temp)',然后在下一行立即使用'temp'!虽然这些行都不可访问,因为您先返回。你似乎打算释放一些内存,并返回指向该内存的指针(显然这将不起作用) –