ciao a tutti
ho creo e distruggo una matrice nel seguente modo

codice:
void ** creaMatrice(int n,int size)

{

	int i;

	//alloco n celle di ognuna di 'size0 byte

    void ** m = (void**)calloc(n,size);

    //per ogni elemento, alloco un vettore sempre di n locazioni

    for(i=0;i<n;i++)

    {

      m[i] = calloc(n,sizeof(byte));

    }

    

    return m;

}



void distrugiMatrice(void **m,int n)

{

	int i;

	for(i=0;i<n;i++)

    {

      free(m[i]);

    }

    free(m);

}
perché l'istruzione free(m[i]); della funzione distrugiMatrice mi fa spuntare un backtrace interminabile, dicendomi qualcosa come "double free o corruption"?
dove sbaglio?

ps: uso linux e gcc