struct queens_arg {
int board[64];
int focus_idx;
};
struct queens_arg *args;
(*args).focus_idx = 0;
代码如下。我在设置focus_idx = 0
时发生了一个seg错误(已调试)。为什么会这样?我该如何解决?谢谢!
答案 0 :(得分:2)
这是因为您使用了指针,但您没有分配任何内容。因此,你正在写入不属于你的记忆。
您应首先按如下方式分配args
:
struct queens_arg *args = malloc(sizeof(struct queens_arg));
然后你应该检查args != NULL
。如果没有,您可以使用以下方式写入您刚分配的内存:
args->focus_idx = 0;
答案 1 :(得分:2)
问题是你正在创建一个指向struct queens_arg
的指针,但你并没有将它初始化为指向任何地方。因此,当你写
(*args).focus_idx = 0;
您正在关注垃圾指针,导致运行时出现段错误。
要解决此问题,请确保将指针设置为指向某处。以下是如何让它指向动态分配的内存:
struct queens_arg* args = malloc(sizeof (struct queens_arg));
在相关说明中,您无需编写
(*args).focus_idx = 0;
您可以使用此简写:
args->focus_idx = 0;
这意味着完全相同,但更容易阅读。
答案 2 :(得分:0)
您只声明了一个指向queens_arg
结构的指针,实际上没有结构。