Ciao ho creato un ciclo infinito ma alla seconda iterazione mi da errore!
questo e' il codice:
codice:
while(1)
{
aggiornamento();
}
La funzione aggiornamento si trovata in un altro file .c
codice:
//variabile globale
MYSQL * mysql;
int collegamentoDB(){
if (! (mysql = mysql_init(mysql))) {
printf ("Errore nell' allocazione di memoria.\n");
return -1;
}
if (! mysql_real_connect (mysql, host, db_user, db_pass, "",0, NULL, 0)) {
printf ("Errore nella connessione.\n");
return -2;
}
if (mysql_select_db (mysql, database)) {
printf ("Errore nella selezione del database.\n");
return -3;
}
return 0;
}
int aggiornamento(){
if(collegamentoDB( mysql ) != 0){
return -2;
}
mysql_close(mysql);
return 0;
}
La prima iterazione funziona alla seconda mi da il seguente errore:
39 if (! (mysql = mysql_init(mysql))) {
(gdb)
46 if (! mysql_real_connect (mysql, host, db_user, db_pass, "",0, NULL, 0)) {
(gdb)
Program received signal SIGSEGV, Segmentation fault.
0xb7d0163d in _int_malloc () from /lib/tls/libc.so.6
se io ho tolgo la riga mysql_close(mysql); funziona, ma ho paura di lasciare aperta la connessione con il db anche quando faccio altre cose!
La seconda domanda e' alloco dello spazio per una variabile quando esco dalla funzione cioe' termina lo spazio viene liberato oppure devo liberarlo io con free(variabile)?