【发布时间】:2019-02-15 16:35:05
【问题描述】:
我有一个函数应该读取(以一种非常糟糕的方式)一个文件。我希望它修改我作为参数传递的结构以存储它必须读取的内容。但是当我调用它时,它会引发分段错误。我有一个 print 作为该函数所做的第一件事,但它没有这样做。所以我想我对函数的声明或其他东西有问题。我想不通。
int main(int argc, char **argv){
//some parser here
struct client_config *config;
read_software_config_file(*config); //I also passed it as non pointer and & but nothing worked.
}
void read_software_config_file(struct client_config config){
printf("Hello"); //it breaks here
}
正如有人指出的那样:
struct client_config config;
read_software_config_file(&config);
但它仍然显示分段错误。
【问题讨论】:
-
config没有指向任何地方,但您在调用函数时取消引用它。 未定义的行为原样。 -
那我该如何解决呢?
-
将
config定义为一个结构,而不是指向它的指针。然后传递它的地址。 -
那你还有一些其他的问题,或者你没有做好。发布正确的minimal reproducible example。
-
你的
read_software_config_file应该带指针,顺便说一句。你看到编译器警告了吗?你应该有一些。