Tampoco es que sea un experto, pero si declaras
no tienes que usar el simbolo -> para acceder a los campos de una estructura. Si no me equivoco, el operador -> se usa cuando la variable de tipo struct lokesea es un puntero, o sea si lo hubieses declarado
Si lo que quieres es pasarle el puntero doble por referencia para ser modificado prueba a hacer así la llamada:
ReservaMemoria(&(a.sudoku));//Le pasas las direccion del puntero doble
Yo creo que así te podría funcionar. Pruebalo a ver qué tal y si no dilo por aquí para que otros expongan su opinión.