我使用星號簽署了造成問題的兩行。在linux中分配內存的問題
第一行爲日誌文件分配內存,該內存將用於第二個已簽名的行。 在第二個簽名行存在分段錯誤問題。 這是由於「日誌文件」未分配的事實造成的。 我很確定這是因爲如果我在load()中分配內存,它會起作用。 但是我想在類的構造函數中分配內存,而不是在方法load()中分配內存。
我不明白爲什麼它不起作用! 這是我第一次在Linux上,所以也許我做錯了什麼!
謝謝 馬爾科
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;
}
請將您的代碼縮減爲可用於演示問題的可運行(即可編譯,可運行)示例。否則,我們只能猜測問題出在哪裏... – sleske 2011-04-21 12:06:21
我們看不到'logfile'在哪裏聲明。它是類服務器的成員變量嗎?它是全球性的嗎?讓你的例子獨立編譯對調試至關重要。 – DevSolar 2011-04-21 12:20:25
當編程C++時,'new'通常比'malloc'更受歡迎 – knittl 2011-04-21 12:26:28