void append(Link *link,LList *list)
{
Link *lastLink=NULL;
lastLink=list->head;
if(lastLink!=NULL)
{
while(lastLink->next!=NULL)
{
lastLink = lastLink->next;
}
lastLink->next=link;
}
else
{
list->head=link;
}
list->size++;
}
for(i=0;i<65000;i++)
{
link=(Link*)malloc(sizeof(Link));
link->value=i;
append(link,list2);
printf("%d\n",list2->size);
}
上面是一个链表的附加函数,关联的 for 循环调用它。我使用系统时钟来测试这个函数的运行时间。当它自己运行时,它只会在崩溃之前经历 8264 次循环迭代,如果它在类似循环中的 prepend 函数之后运行(65000 次迭代构建不同的列表),则 append 循环只会在崩溃前达到 508 次。所以它看起来与内存有关,但我不确定。