Ciao a tutti, ho un problema con un segmentation fault generato nel momento in cui viene invocata la funzione calloc. Tuttavia il problema si pone in un punto ben preciso del mio programma, perchè tutte le altre altre parti che utilizzano tale funzione vanno a buon fine...Posto un po di codice per farvi capire meglio.
Come avrete capito scheda_t è un tipo da me definito che contiene delle stringhe, le inizializzo copiando dentro ognuna di loro una stringa nulla. Non capisco perchè solo durante quella chiamata la calloc mi da il segfault...Aiutatemi voi!codice:scheda_t* new_scheda() { scheda_t* s=calloc(1, sizeof(scheda_t)); //segfault alla seconda iterazione, la prima va a buon fine.... if(s==NULL) return; s->autore = NULL; return s; } void free_scheda(**ps) { if( (ps == NULL) || (*ps == NULL) ) return; else{ ((**ps).autore) = NULL; memcpy(((*ps)->titolo), STRING_NULL, sizeof((*ps)->titolo)); memcpy(((*ps)->nota), STRING_NULL, sizeof((*ps)->nota)); memcpy(((*ps)->collocazione), STRING_NULL, sizeof((*ps)->collocazione)); memcpy(((*ps)->descrizione_fisica), STRING_NULL, sizeof((*ps)->descrizione_fisica)); *ps= NULL; } free(*ps); free(&ps); } funzione1 ........ //dichiara le sue cose scheda_t* s=new_scheda(); ........//continua senza problemi alla prima chiamata. main() c=funzione1 //termina con successo free_scheda(); funzione1() //ha come argomento c calcolato dalla prima invocazione della funzione![]()

Rispondi quotando