C 使用“->”使用指针导航结构
我正在尝试创建一个电话簿,它是一个二进制搜索树,在每个叶子的末尾都有一个链接列表,但是,我遇到了一个分段错误。我觉得这是由makenode函数引起的,它创建了树的第一个节点。我的结构如下C 使用“->”使用指针导航结构,c,macos,gcc,textedit,C,Macos,Gcc,Textedit,我正在尝试创建一个电话簿,它是一个二进制搜索树,在每个叶子的末尾都有一个链接列表,但是,我遇到了一个分段错误。我觉得这是由makenode函数引起的,它创建了树的第一个节点。我的结构如下 typedef struct number{ char number [20]; struct number *next; } Number; typedef struct list { Number *first, *last; } List; typedef struct tr
typedef struct number{
char number [20];
struct number *next;
} Number;
typedef struct list {
Number *first, *last;
} List;
typedef struct tree {
char name[20];
struct tree * left;
struct tree * right;
List * next;
} Tree;
我的makenode函数是
Tree *makenode (char name[20], Tree *l, Tree *r, Number e) {
Tree *newnode;
newnode = malloc( sizeof(Tree));
strncpy(newnode->name,name,19);
newnode->next=malloc(sizeof(List));
newnode->next->first=malloc(sizeof(Number));
strncpy(newnode->next->first->number,e.number,11);
newnode->left = l;
newnode->right = r;
return newnode;
}
我只是希望能得到一些建议,看看电话是否接通了
strncpy(newnode->next->number,e.number,11);
线路是否导致了问题,以及关于它导致问题的原因的一些建议。
提前感谢。分段错误,因为内存未分配给结构列表
为什么不使用调试器?如果这样做,您将在抛出异常的行处停止。所以请使用你已经拥有的工具!很抱歉我是初学者,但是,我该如何使用调试器呢?它是内置在GCC中的吗?是的,因为newnode缺少内存->next@ElisJones,查找GDBit甚至不编译,newnode->next没有名为number的成员,只有first和last。
newmode->next = malloc(sizeof(LIST));