Salve a tutti,

il mio problema è questo:
mando in ingresso al mio programma un file con più di 2000 righe, e per ogni riga il programma costruisce una matrice 2*256, che va ad incrementare di uno l'elemento corrspondente ad una certa riga ed una certa colonna, secondo un determinato criterio. Al passo i-esimo, la matrice che visualizzo sarà uguale alla matrice al passo precedente ad eccezione di un elemento che verrà incrementato di uno rispetto al valore assunto al passo (i-1)-esimo.

Inizializzando la matrice in maniera statica, dopo un certo numero di righe del file, il programma si blocca e visualizzo segmentation fault. Così, ho utilizzato il metodo dell'allocazione dinamica della memoria, inizializzando due matrici dinamiche: la prima 'matrice1' che si genera ad ogni riga del file, e la seconda 'matrice2' che, al passo i-esimo, invece dovrebbe risultare la somma della matrice1 al passo i-esimo sommata alla matrice2 al passo (i-1)-esimo.


Per maggior chiarezza posto il codice di segiuto:
codice:
while(!feof(ingresso)){

//inizializzazione della matrice
unsigned int **matrice1;

int riga;
int mm = 2;
int nn = 256L;
int i,j,ii,jj;

matrice1=(unsigned int**)malloc(sizeof(unsigned int*)*mm);

for(riga=0;riga<mm;riga++){

matrice1[riga]=(int*)malloc(sizeof(int)*nn);
}
unsigned int **matrice2;

matrice2=(unsigned int**)malloc(sizeof(unsigned int*)*mm);

for(riga=0;riga<mm;riga++){

matrice2[riga]=(int*)malloc(sizeof(int)*nn);
}
matrice1[0][ha-1]++;
matrice1[1][hb-1]++;

for(i=0; i<=mm-1;i++){ //scorre le righe

for(j=0; j<= nn-1; j++){ //scorre le colonne

matrice2[i][j]+=matrice1[i][j];
printf("%u\t", matrice2[i][j]);
}
printf("\n");
}
}
fclose(ingresso);

Il problema è che ad ogni passo la matrice2, ovvero la matrice somma, risulta uguale alla matrice1. E' come se ad ogni passo dimentica quello che è successo in precedenza, e visualizza solo quella al passo i-esimo.

Qualcuno sa come posso risolvere il problema?
GRAZIE