Salve!
Ho creato un tipo di dato struttura così definito :
typedef struct
{
double **matrice; /* Matrice */
int num_righe; /* Numero righe della matrice */
int num_colonne; /* Numero colonne della matrice */
} matrice_t;
Poi ho allocato dinamicamente la matrice tramite questa funzione :
void alloca_matrice(matrice_t *mat)
{
int i;
/* alloca le righe */
mat -> matrice = (double **)calloc(mat-> num_righe,sizeof(double *));
/* alloca le colonne */
for (i=0;
i < mat->num_righe;
i++)
{
mat-> matrice[i] = (double *)calloc(mat-> num_colonne,sizeof(double));
}
}
Dopo aver svolto vari calcoli tra matrici, arrivato alla fine del programma, ho invocato la funzione da me definita per deallocare la matrice:
void dealloca_matrice(matrice_t *mat)
{
int i;
for (i = 0;
i < mat -> num_righe;
i++)
{
free(mat -> matrice[i]);
free(mat -> matrice);
}
}
invocandola in questo modo nella funzione main per ogni matrice allocata :
dealloca_matrice(&matrice_a);
dealloca_matrice(&matrice_b);
dealloca_matrice(&matrice_som_dir);
dealloca_matrice(&matrice_prod_dir);
Al momento dell'esecuzione, i calcoli vengono eseguiti correttamente, ma al termine compare questo :
free() : invalid pointer
Annullato (core dump creato).
Cosa ho sbagliato? Mi dareste una grande mano