temp = Head;
while (Head != NULL) {
Head = temp->nextPtr;
free(temp);
}
내 프로젝트에서는 임시 목록을 연결하고 동시에 링크 된 목록의 모든 요소를 제거하려고하지만 컴파일러는 세그먼트 오류를 제공합니다.연결된 목록의 모든 요소를 제거하십시오.
temp = Head;
while (Head != NULL) {
Head = temp->nextPtr;
free(temp);
}
내 프로젝트에서는 임시 목록을 연결하고 동시에 링크 된 목록의 모든 요소를 제거하려고하지만 컴파일러는 세그먼트 오류를 제공합니다.연결된 목록의 모든 요소를 제거하십시오.
루프의 시작 또는 끝 부분에 temp=Head;
어딘가에 첫 번째 헤드에 temp가 없습니다.
가장 쉬운 방법은 루프 앞에있는 temp=Head;
을 루프 내부의 첫 번째 줄로 이동하는 것입니다.
while (Head != NULL) {
temp = Head;
Head = temp->nextPtr;
free(temp);
}
저는 컴파일러가 Segmentation Fault
을 제공한다고 생각하지 않습니다. 꽤 끔찍한 입력에도 불구하고 segfault해서는 안됩니다. 내 생각에 프로그램이 segfault를 일으키고 있다고 생각합니다. 루프의 본문에 temp
을 설정하는 것을 게을리했습니다.
코드에서 동일한 노드를 자유롭게 유지 하시겠습니까? 임시 포인터는 while 루프 내부에서 전혀 변하지 않습니다. – dip
이 샘플 코드는 작동하지 않습니다. – justuser