ho segnato in rosso le due righe che mi danno problemi.server::server(){
port = 0;
serverup = 0;
loaded = 0;
logfile = (char *) malloc(SERVER_PATHS_SIZE*sizeof(char));
}
int server::load(int in_id, char *in_name, char *in_ip, int in_port,
char *in_rcon, char *in_logfile){
int err;
sprintf(name, "%s\x00", in_name);
sprintf(ip, "%s\x00", in_ip);
port = in_port;
sprintf(rcon, "%s\x00", in_rcon);
sprintf(logfile,"%s\x00", in_logfile);
err = urt.set(ip, port, rcon);
if(err < 1){
printf("server::load(): error from urt.set()\n");
return 0;
}
printf("server::load(): server %d loaded!\n", id);
loaded = 1;
return 1;
}
alla seconda riga in rosso arriva un bel (anzi brutto ) segmentation fault, come se non avessi allocato memoria per l'array logfile. Infatti se alloco la memoria nella stessa funzione il problema non si presenta.
E' come se la memoria venisse rilasciata alla fine di ogni funzione e non mi desse la possibilità di tenerla allocata fino a quando non chiamo free o il programma non termina.
cosa puo essere?
su windows non mi è mai capitato ed è la mia prima volta che programmo su linux e ho sto problema!
grazie mille