我正在尝试提出一个基本的基数排序(我从来没有真正看过一个,所以我很抱歉,如果我的确很糟糕),但我在行上遇到EXC_BAD_ACCESS
错误{ {1}}。我的link = *(link.pointer);
技能不是很好,所以希望有人能教会我做错了什么。
我正在使用XCode并启用了ARC。
以下是代码:
C
此外,如果有人想建议改进我的类型,那也将受到赞赏。
答案 0 :(得分:0)
问题来自我如何分配链表。我改变了
LinkedList link = { array[i], NULL };
link.pointer = linkedListPointers[location];
到
LinkedList *link = malloc(sizeof(LinkedList));
link->value = array[i];
link->pointer = linkedListPointers[location];
在第一个例子中,指向link
的指针在每次循环迭代时保持不变(我不知道它会这样做),所以我需要使指针指向新分配的内存块。
编辑:
改变这一点也让我改变了
while(link.pointer)
{
link = *(link.pointer);
array[location++] = link.value;
}
到
while(linkPointer)
{
link = *linkPointer;
array[location++] = link.value;
linkPointer = link.pointer;
}