Voglio allocare dinamicamente una matrice di dimensione 3 passandola per indirizzo alla funzione.
Questo è il codice:
codice:
void alloca(unsigned char ****m,int r, int c, int p)
{
int i,j;
*m = malloc(r*sizeof(char*));
for(i = 0; i < r; i++)
{
*m[i] = malloc(c*sizeof(char*));
for(j = 0; j < c; j++)
*m[i][j] = malloc(p*sizeof(char));
}
}
Al valore j = 1 da un errore di segmentazione che non riesco a capire come risolvere.
Posto il codice della funzione analoga (che non da alcun errore) dove la matrice non viene passata per indirizzo
codice:
unsigned char ***alloca(int r, int c,int p)
{
int i,j;
unsigned char ***m;
m = malloc(r*sizeof(char*));
for(i = 0; i < r; i++)
{
m[i] = malloc(c*sizeof(char*));
for(j = 0; j < c; j++)
m[i][j] = malloc(p*sizeof(char));
}
return m;
}