线程 1 收到信号 SIGSEGV,分段错误
Thread 1 received signal SIGSEGV, Segmentation fault
我尝试使用 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_initialize(Queue *queue_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;
您必须先分配 List
结构,然后才能初始化其成员:
#include <stdio.h>
#include <stdlib.h>
typedef struct list {
node *head;
node *tail;
int number_of_nodes;
} List;
typedef struct queue {
List *ptr_list;
} Queue;
void list_initialize(List *ptr_list) {
//TODO
printf("hello in list_initialize\n");
if (ptr_list) {
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");
}
void queue_initialize(Queue *queue_list) {
printf("hello inside queue_initialize\n");
if (queue_list) {
queue_list->ptr_list = malloc(sizeof(List));
list_initialize(queue_list->ptr_list);
}
printf("hello after queue_initialize\n");
}
我尝试使用 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_initialize(Queue *queue_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;
您必须先分配 List
结构,然后才能初始化其成员:
#include <stdio.h>
#include <stdlib.h>
typedef struct list {
node *head;
node *tail;
int number_of_nodes;
} List;
typedef struct queue {
List *ptr_list;
} Queue;
void list_initialize(List *ptr_list) {
//TODO
printf("hello in list_initialize\n");
if (ptr_list) {
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");
}
void queue_initialize(Queue *queue_list) {
printf("hello inside queue_initialize\n");
if (queue_list) {
queue_list->ptr_list = malloc(sizeof(List));
list_initialize(queue_list->ptr_list);
}
printf("hello after queue_initialize\n");
}