我在下面的链表函数中遇到了一个错误,我不知道该怎么办。疯狂的部分(对我来说)是我的代码到目前为止一直运行良好,并且在遇到错误之前仍然可以进行多次调用。
该函数的目标是在 PathItem 链表的末尾添加一个新项(PathItem,其中包含一个 BinaryItem)。我的功能如下
void addPathItemAtEnd(struct PathItem * pathItem, struct BinaryItem * binaryItem) {
if (pathItem == NULL) {
pathItem = malloc(sizeof(struct PathItem));
pathItem->binaryItem = binaryItem;
pathItem->next = NULL;
} else {
while (pathItem->next != NULL) {
pathItem = pathItem->next;
}
struct PathItem * newPathItem = malloc(sizeof(struct PathItem));
newPathItem->binaryItem = binaryItem;
newPathItem->next = NULL;
pathItem->next = newPathItem;
}
}
有问题的线是pathItem->next = newPathItem
. EXC_BAD_ACCESS
我在调试器中得到错误。再一次,这段代码以前运行良好,所以我不明白现在发生了什么来扰乱它......
这似乎是重新分配指针变量的问题。不知道怎么了。
任何想法,建议,批评。如果需要,我可以附加更多/我的代码的其余部分。真的需要你的帮助和提前感谢。