我目前正在尝试创建链接列表并在函数中初始化它。它看起来像这样:
void add_forest(node_t *head, unsigned char value)
{
int key;
node_t *current = head;
while (current->next != NULL)
{
current = current->next;
}
}
int main()
{
node_t *head;
*head = init_forest(); //error here
}
我目前在我的代码中的以下区域遇到段错误,无法找出原因。我在init_forest()
创建头部,然后在主要部分中传回。当我通过init_forest()
时,树就会建成。有什么建议吗?
答案 0 :(得分:3)
当前问题出在main()
:
node_t *head;
*head = init_forest();
head
是一个未初始化的指针;你不能取消引用它,而你实际上并不想要。你应该使用:
node_t *head = init_forest();
但是,您需要确保init_forest()
返回node_t *
,而不是node_t
值。对于这种链表管理功能,这是更正统的风格。你在函数中分配了结构;如果你返回结构的副本而不是指向结构的指针,你就会泄漏内存(最后你会遇到其他问题)。