저는 C++을 사용하여 데이터 구조 과정을 진행하고 있으며 간단한 단일 링크 목록 구조를 구현해야합니다.C++에서 링크 된 목록이 비어 있는지 확인하기 위해 null 포인터에 액세스합니다.
나는 다른 모든 방법을 알아 냈습니다. 실제로 목록이 비어 있는지 확인하면 프로그램이 충돌하여 조각화 오류가 발생합니다.
: 비어 있지 않은 경우,이 같아야 반면> NULL
-
HEAD :
목록이 비어
는 내 연결리스트 구조를 같이하도록되어 HEAD -> ... -> NULL내 isListEmpty는()과 같이 보인다 :
bool singleList::isListEmpty(void) {
return (head->next == NULL);
}
null 포인터에 액세스하려고 할 때 코어가 덤프되는 것이 확실하지만 어디에 있는지 잘 모르겠습니다. 내가 어디에서 봐야하는지에 대한 어떤 제안?
감사합니다.
--Edited--
미안 해요, 난 충분히 밝혀지지 않았다.
이list.list_insert_front(guy1);
list.list_insert_front(guy2);
list.list_remove(guy1);
list.list_remove(guy2);
list.isListEmpty(); //This line causes segmentation fault.
'head'가 'NULL'일 가능성이 있다고 생각하십니까? 어쨌든 디버거를 사용하는 방법을 배우거나 [mcve]를 제공하십시오. – YSC
'head'는 빈 목록에 대해'nullptr'이 아닌가요? 이는 기본 생성자 (아마도 빈 목록을 만드는)가'head'를 생성한다는 것을 의미합니다. 아마도 당신은'head'가 빈리스트에 대해'nullptr'인지를 확인하려고했을 것입니다. –
삽입 및 제거 함수 호출이'head'가 null이 아니라는 것을 보장하지는 않습니다. 함수 내부에서 잘못된 링크를 추가하거나 제거 할 수 있습니다. 함수를'head == null'으로 변경하여 테스트하십시오. – Confuzing