我使用星号签署了造成问题的两行。在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