free(queue)- не хватает в обработке ошибки если память не получили, когда hp == NULL (в предыдущем сообщении моем).