학교의 경우 연결 목록에 팝업 기능을 구현해야합니다. 그러나 그것을 실행할 때 세분화 오류가 발생하고 이유를 알지 못합니다 ... 이미 디버깅했으며 값 = 현재 -> 다음으로 가리 킵니다. 저는 C에게 매우 익숙합니다. 그래서 이것이 바보 같은 질문이라면 유감입니다.C 세그먼트 화 오류 링크 된 목록
참고 : 팝업 옆에 훨씬 많은 기능을 구현해야했습니다. 따라서 여기서 볼 수있는 다른 모든 함수 호출은 이미 구현되어 있으며 올바로 작동합니다.
list.h
int list_pop(struct List* list, int* value);
list.c
int list_pop(struct List* list, int* value)
{
struct ListNode* curr = list->first;
struct ListNode* prev;
if (curr == NULL)
return 0;
while (curr != NULL)
{
prev = curr;
curr = curr->next;
}
*value = curr->value; **Debugger says that in this line there is something wrong.**
prev->next = NULL;
free(curr);
return 1;
이 팝업 기능이 맞다면 누군가가 나에게 말할 수있는 경우 또한 아주 멋진 것, 사전에 감사합니다 :)
처음에는 'current == NULL'인 경우에만 해당 줄 앞의 while 루프가 종료됩니다. 즉,'current'는 그 라인에서'NULL'을 보장합니다. 즉, 역 참조하면 안됩니다. – murgatroid99
이 줄 : while (current! = NULL)은 현재가 이미 목록의 끝을 지나고 있다는 것을 의미합니다. 그러나 이전은 목록의 마지막 항목을 가리 킵니다. 그래서 전에 사용 – user3629249