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 회 반복 만 통과하고 비슷한 루프 (65000 회 반복으로 다른 목록 작성)에서 앞에 추가 기능을 실행하면 추가 루프가 충돌하기 전에 508에 도달합니다. 그래서 그것은 메모리와 관련이 있지만 확실하지 않습니다.이 루프의 너무 많은 반복 만 통과 할 수 있습니까?
'list2'가 올바르게 초기화 되었습니까?'list2'를 초기화하는 코드를 표시 할 수 있습니까? – Kninnug
list2를 처리하는 코드의 나머지 부분을 보여주십시오. 그리고 그것이 충돌 할 때 정확히 무슨 일이 일어날까요? 세고 폴트? –