hola! creo el error esta en:
"p" ya es un puntero, por lo tanto si vos pones "&p" les estarias pasando la direccion de "p"(puntero a puntero) a la funcion fread, lo cual esta mal
Otra cosa, antes de entrar a la funcion leer_registro, "p" tambien esta creado como:
Saludos