この関数では、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'を使います!あなたが最初に戻ったので、どちらの線にも到達することはできません。また、いくつかのメモリを解放し、そのメモリへのポインタも返す予定です(明らかに動作しません)。 –