C 线程1接收到信号SIGSEGV,分段故障

C 线程1接收到信号SIGSEGV,分段故障,c,linked-list,segmentation-fault,queue,malloc,C,Linked List,Segmentation Fault,Queue,Malloc,我试着用gdb调试我的代码:我得到了一个错误 Thread 1 received signal SIGSEGV, Segmentation fault 这是我的密码: typedef struct list { node *head; node *tail; int number_of_nodes; } List; typedef struct queue { List *ptr_list; } Queue; void queue_initialize(Qu

我试着用gdb调试我的代码:我得到了一个错误

Thread 1 received signal SIGSEGV, Segmentation fault
这是我的密码:

typedef struct list {
    node *head;
    node *tail;
    int number_of_nodes;
} List;

typedef struct queue {
    List *ptr_list;
} Queue;

void queue_initialize(Queue *queue_list) {
    //TODO
    printf("hello inside queue_initialize\n");  
    list_initialize(queue_list->ptr_list);
    printf("hello after queue_initialize\n");
    return;
}

void list_initialize(List *ptr_list) {
    //TODO
    printf("hello in list_initialize\n");
    ptr_list->head = 0;
    printf("hello\n");
    ptr_list->tail = 0;
    printf("hello\n");
    ptr_list->number_of_nodes = 0;
    printf("hello after list_initialize\n");
}
当我调用函数
queue\u initialize(queue*queue\u list)
我得到这个输出

hello before queue_initialize
hello inside queue_initialize
hello in list_initialize
但预期产出是:

hello before queue_initialize
hello inside queue_initialize
hello in list_initialize
hello 
hello
hello after list_initialize
有人能告诉我这个代码有什么问题吗? 非常感谢你的努力,请尽快帮助我

我非常确定这些行中存在错误:

ptr_list->head = 0;
ptr_list->tail = 0;
ptr_list->number_of_nodes = 0;

必须先分配
列表
结构,然后才能初始化其成员:

#包括
#包括
类型定义结构列表{
节点*头;
节点*尾部;
节点的整数个数;
}名单;
typedef结构队列{
列表*ptr_列表;
}排队;
无效列表\u初始化(列表*ptr\u列表){
//待办事项
printf(“列表中的hello\u初始化”);
如果(ptr_列表){
ptr_列表->头=0;
printf(“hello\n”);
ptr_列表->尾部=0;
printf(“hello\n”);
ptr_列表->节点数量=0;
}
printf(“列表初始化后的hello\n”);
}
无效队列\初始化(队列*队列\列表){
printf(“队列中的hello_初始化\n”);
if(队列列表){
queue_list->ptr_list=malloc(sizeof(list));
列表\u初始化(队列\u列表->ptr\u列表);
}
printf(“队列初始化后的hello\n”);
}