PDA

View Full Version : [C] disallocare matrici in vettore di struct


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);
}

DanieleC88
12-07-2008, 15:19
Non fai un ciclo for anche quando allochi ogni vett[i]? E quanto vale i?

Consiglio: spezza il tutto su più funzioni ausiliarie. :)

hasmet
13-07-2008, 08:05
Grazie ho risolto aggiungendo un * alla dichiarazione della matrice, grazie lo stesso potete chiudere :D :D