以下功能是否有问题?不知何故,他们正在创建一个段错误。调试以下功能(段故障错误)
struct processNode* create_node()
{
struct processNode* newNode = (struct processNode*)malloc(sizeof(struct processNode));
newNode->next = NULL;
return newNode;
}
struct processNode* append_node(struct processNode* list,struct processNode* newNode)
{
struct processNode* tracker= NULL;
tracker = list;
if(tracker == NULL)
{
tracker = newNode;
}
else
{
while(tracker->next != NULL)
{
tracker =tracker->next;
}
tracker->next = newNode;
tracker = tracker->next;
}
tracker->next=NULL;
tracker = list;
return tracker;
}
我在C中创建一个shell,需要创建一个链接列表来解析用户的命令行。在第二个函数中,我打算用新添加的指针返回一个新列表;
将'list'视为NULL。现在走这个功能。 *小心*。你认为'tracker = list'确实如此(注意:它在该函数中出现两次*;在'if'块中出现一次*,在'else'块之后出现一次*)。嗯。 – WhozCraig
你是否真的试图在调试器中运行它(根据你的问题的标题)?这应该告诉你哪里出了问题。我还发现valgrind是这些问题的有用工具,因为它可能会导致内存分配出错。 – Evert
[请参阅此讨论为什么不在'C'中投射'malloc()'和家族的返回值。](http://stackoverflow.com/q/605845/2173917)。 –