附加到链表时出现分段错误

时间:2019-10-28 17:55:16

标签: c linked-list segmentation-fault

我正在尝试创建一个链表,到目前为止,我一直遇到分段错误。

通过一些测试,我试图找出它发生的位置,但是我不确定为什么会发生。

它在以下行触发:tempo->fileName = str;
是因为我试图对指针进行赋值还是其他我不知道的东西?

typedef struct listnode{
  struct listnode* next;
  char* fileName;
} listnode;

struct listnode* head;

//This section of code will be dedicated to the creation and management
//of the listnode functions

listnode* createNode(char* str, listnode* next){
  listnode* tempo;
  tempo = (listnode*)malloc(sizeof(struct listnode));

  if(tempo = NULL){
    printf("Error creating space for new node.\n");
    exit(0);
  }

  tempo->fileName = str;
  tempo->next = next;

  return tempo;
}

1 个答案:

答案 0 :(得分:1)

条件if(tempo = NULL)中存在错误。而不是比较tempo == NULL,而是分配tempo = NULL。然后执行tempo->fileName = str,它实际上是在访问NULL指针。仅仅因为您在编写条件语句,并不能使=运算符成为相等运算符,所以它仍然是赋值运算符。比较运算符为==

将条件更改为:

if(tempo == NULL)