我删除了代码中无用的部分以使我的帖子更清晰。
问题在这里,函数 init_dda()
中的第一行也是唯一一行使我的程序出现段错误,我真的不明白这是怎么可能的,如果你有解释,谢谢你。
void dda_algorithm(t_env *e)
{
t_dda *d;
d = NULL;
init_dda(e, d);
}
void init_dda(t_env *e, t_dda *d)
{
d->map_x = 3;
}
这是我的结构 t_dda
的构造:
typedef struct s_dda
{
int map_x;
} t_dda;
启用警告标志后我没有编译错误。
最佳答案
在您的 init_dda()
调用中,您将第二个参数 d
作为 NULL 传递。
然后,在 init_dda()
中,您尝试取消引用该指针。这(取消引用 NULL 指针,这也是一个无效指针)调用 undefined behaviour .段错误是副作用之一。
解决方案:在将内存传递给 init_dda()
之前,您需要为 d
分配内存。你可以看看malloc()
和函数族。
关于c - 为什么这一行使我的程序出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31122027/