设置指向null segfault的指针

dar*_*sky 2 c pointers segmentation-fault

我有一个名为node的结构如下:

struct node {
    int data;
}
Run Code Online (Sandbox Code Playgroud)

存储在某种结构中:

struct structure {
  struct node *pointer;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将指针设置为NULL,如下所示:

struct structure *elements;
elements->pointer = NULL;
Run Code Online (Sandbox Code Playgroud)

为什么会出现这种错误?在将指针设置为null之前,它是否实际尝试取消引用指针?

当我elements从指针切换到实际结构并执行以下操作时:

struct structure elements;
elements.pointer = NULL;
Run Code Online (Sandbox Code Playgroud)

它停止segfaulting和工作.为什么不设置指向null的指针?

oua*_*uah 6

struct structure *elements;
elements->pointer = NULL;
Run Code Online (Sandbox Code Playgroud)

elements指针指向无处.取消引用无效指针(elements指针)是未定义的行为.

您需要初始化elements指向有效对象的指针,例如:

struct structure my_struct;
struct structure *elements = &my_struct;
elements->pointer = NULL;
Run Code Online (Sandbox Code Playgroud)