gpt4 book ai didi

c++ - linux内存分配问题

转载 作者:太空宇宙 更新时间:2023-11-04 16:32:08 24 4
gpt4 key购买 nike

我在造成问题的 2 行上标有星标。

第一行为日志文件分配内存,将在第二行签名中使用。在第二个有符号的行中存在段错误的问题。这是由于未分配“logfile”造成的。我很确定这一点,因为如果我在 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;
}

最佳答案

我认为您正在尝试 nullterminate in_logfilein_rcon

这不适用于 printf,因为 printf 首先需要以 null 结尾的字符串作为 %s 的参数

charptr[known_length] = 0

代替

关于c++ - linux内存分配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5743756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com