基数列表中指针的EXC_BAD_ACCESS用于基数排序

时间:2013-08-01 20:33:28

标签: c linked-list exc-bad-access radix-sort

我正在尝试提出一个基本的基数排序(我从来没有真正看过一个,所以我很抱歉,如果我的确很糟糕),但我在行上遇到EXC_BAD_ACCESS错误{ {1}}。我的link = *(link.pointer);技能不是很好,所以希望有人能教会我做错了什么。

我正在使用XCode并启用了ARC。

以下是代码:

C

此外,如果有人想建议改进我的类型,那也将受到赞赏。

1 个答案:

答案 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;
}