hasmet
12-07-2008, 10:08
Salve, mi trovo con un problema che non so risolvere. Io ho allocato dinamicamente un vettore di struct, e dentro di esso ho creato due matrici dinamiche. Il problema è che non riesco a disallocarle, in quanto il programma termina mostrandomi un errore quando disalloco le righe delle matrici, non so come fare, quancuno mi può aiutare??? Grazie milleeeee
typedef struct{
char **bia,**ner;
}giocatore;
giocatore *vett;
int main(){
int num=42;
//alloco il vettore
vett=(giocatore *)calloc(dim,sizeof(giocatore));
//alloco le matrici
vett[i].bia=(char **)calloc(30,sizeof(char));
for(j=0;j<30;j++){
vett[i].bia[j]=(char *)calloc(10,sizeof(char));
}
vett[i].ner=(char **)calloc(30,sizeof(char));
for(j=0;j<30;j++){
vett[i].ner[j]=(char *)calloc(10,sizeof(char));
}
//disalloco le matrici
for(i=0;i<num;i++){
for(j=0;j<30;j++){
free(vett[i].bia[j]);
free(vett[i].ner[j]);
}
//arrivato qui mi dà un errore e il programma termina
free(vett[i].bia);
free(vett[i].ner);
}
free(vett);
}
typedef struct{
char **bia,**ner;
}giocatore;
giocatore *vett;
int main(){
int num=42;
//alloco il vettore
vett=(giocatore *)calloc(dim,sizeof(giocatore));
//alloco le matrici
vett[i].bia=(char **)calloc(30,sizeof(char));
for(j=0;j<30;j++){
vett[i].bia[j]=(char *)calloc(10,sizeof(char));
}
vett[i].ner=(char **)calloc(30,sizeof(char));
for(j=0;j<30;j++){
vett[i].ner[j]=(char *)calloc(10,sizeof(char));
}
//disalloco le matrici
for(i=0;i<num;i++){
for(j=0;j<30;j++){
free(vett[i].bia[j]);
free(vett[i].ner[j]);
}
//arrivato qui mi dà un errore e il programma termina
free(vett[i].bia);
free(vett[i].ner);
}
free(vett);
}