Primo di tutto vi posto un po' di codice

codice:
struct Salvataggio
{
	int **matrix;
	int righe;
	int colonne;
	char giocatore1[20];
	char giocatore2[20];
};

int salva_partita (int **matrix, int righe, int colonne, char *giocatore1, char *giocatore2)
{
	char *filename = "save.dat";
	FILE *fp;
	int vero=TRUE, falso=FALSE;
	struct Salvataggio *salvataggio;
	
	salvataggio = (struct Salvataggio *) malloc(sizeof(struct Salvataggio)); // alloco la memoria per una struct Salvataggio
	/* Salvo tutti i valori nei rispettvi campi della struttura */
	salvataggio->matrix = matrix;
	salvataggio->righe = righe;
	salvataggio->colonne = colonne;
	strcpy(salvataggio->giocatore1, giocatore1);
	strcpy(salvataggio->giocatore2, giocatore2);
	 
	if((fp = fopen(filename, "wb")) == NULL)  // apro il file binario in scrittura
		return falso;    // se il file non si apre correttamente la funzione termina

	if(fwrite(salvataggio, sizeof(struct Salvataggio), 1, fp) != 1)  // salvo la struct Salvataggio nel file
	{
		fclose(fp);         // se la scrittura non avviene correttamente
		return falso;       // chiudo il file e la funzione termina
	}

	fclose(fp); // chiudo il file
	return vero;
}
Allora il problema è questo: tutti i campi della struct mi si salvano correttamente. Tutti tranne matrix. L'int **matrix che passo come parametro alla funzione è una matrice dinamica precedentemente allocata. Non sono ancora molto esperto di file e sto imparando adesso. Quacuno potrebbe aiutarmi con queste poche info che ho dato?

Grazie.