j'ai signé avec les étoiles les 2 lignes qui créent le problème.problème dans l'allocation de la mémoire dans Linux
La première ligne alloue de la mémoire pour le fichier journal, qui sera utilisé dans la deuxième ligne signée. à la deuxième rangée signée il y a un problème de faute de segmentation. Ceci est dû au fait que "logfile" n'est pas alloué. Je suis sûr de cela parce que si j'alloue la mémoire dans load() cela fonctionne. Cependant je veux allouer la mémoire dans le constructeur de la classe et non dans la méthode load().
Je ne comprends pas pourquoi ça ne marche pas! Ceci est ma première fois sur Linux et donc peut-être que je fais quelque chose de mal!
Merci, Marco
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;
}
Veuillez réduire votre code à un exemple fonctionnel (c'est-à-dire compilable, exécutable) qui illustre le problème. Sinon, nous ne pouvons que deviner où est le problème ... – sleske
Nous ne pouvons pas voir où 'logfile' est déclaré. Est-ce une variable membre du serveur de classe? Est-ce global? Rendre vos exemples compilables autonomes est crucial pour le débogage. – DevSolar
lors de la programmation de C++, 'new' est généralement préféré à' malloc' – knittl