列入列表分段故障

时间:2015-12-02 17:09:45

标签: c

我刚刚尝试使用C,我试图将列表放入列表中。问题是,当它打印数组 - >计数时,当我尝试更改数组 - > head-> x时,它会显示分段错误。我做错了什么?我还没有完成我的程序,所以这就是为什么我使用宏。

  #include <stdio.h>
  #include <stdlib.h>
  #define N 3

  typedef struct smallList{
      int x;
      struct smallList *next;
  } smallList;

  typedef struct bigList{
      int count;
      struct bigList *next;
      smallList *head;
  } bigList;

  void main(void)
  {
      bigList *array = (bigList*)malloc(sizeof(bigList));

      array->count = 3;
      printf("%d \n", array->count);

      array->head->x = 10;
      printf("%d \n", array->head->x);
  }

2 个答案:

答案 0 :(得分:2)

您尚未为数组中的head变量分配内存。 malloc array空间后尝试

之类的内容
array->head = malloc(sizeof(smallList));

答案 1 :(得分:1)

此处发生分段错误,因为您尝试访问未分配内存的数据结构。你应该为head指针分配内存。这可以通过 array->head = malloc(sizeof(smallList));

您问题的有效代码是:

 #include <stdio.h>

  #include <stdlib.h>


  #define N 3


  typedef struct smallList{

      int x;

      struct smallList *next;

  }smallList;


  typedef struct bigList{

      int count;

      struct bigList *next;

      smallList *head;

  }bigList;


  void main(void)

  {
      bigList *array = malloc(sizeof(bigList));
    array->head = malloc(sizeof(smallList));
      array->count = 3;
      printf("%d \n", array->count);

      array->head->x = 10;
      printf("%d \n", array->head->x);

  }