C에서 연결된 목록 프로그램을 만들고 있는데 세그먼트 오류가 계속 발생합니다. 문제를 코드 몇 줄로 좁혔으며 NULL을 확인하는 것과 관련 있다고 생각합니다. 이 문제를 어떻게 해결할 수 있습니까?NULL 세그먼트 화 오류를 제거하려면 어떻게해야합니까?
1
A
답변
7
이 currentNode
이 deleteNode()
의 시작 NULL
하지 있는지 확인하기 위해 검사를 시도
typedef struct node
{
int contents;
struct node *nextNode;
} Node;
deleteNode(Node *currentNode)
{
while((currentNode->contents) != NULL)
{
//.....Do Stuff.....
currentNode = currentNode->nextNode;
}
}
감사 : 여기에 코드입니다. 나는.
deleteNode(Node *currentNode)
{
if (currentNode == NULL) return;
// ...
// ...
}
4
문제가 의심스러운 경우 currentNode
은 널 포인터입니다. 액세스를 시도하기 전에 currentNode
이 null이 아닌지 확인하십시오. ... 나는이 것을 추측 할
while((currentNode->contents) != NULL)
NULL
와 함께 int
당신의 Node
구조의 contents
필드를 비교한다 :
deleteNode(Node* currentNode)
{
while ((currentNode != NULL) && (currentNode->contents != NULL))
{
/* ... */
currentNode = currentNode->nextNode;
}
}
0
글쎄, 나는이 선 것을 의심 해요 그 대신에 currentNode->nextNode
를 점검하고 있어야한다!
아마도 contents
중 아무 것도 0이 아니므로이 테스트는 목록의 모든 항목에 해당됩니다. 그런 다음 마지막 항목은 에 할당 된 NULL currentNode->nextNode
을 가지며 다음에 루프를 반올림 할 때 참조 해제합니다.
0
currentNode가 NULL 일 때 어떻게됩니까? while 조건에서 NULL 메모리를 역 참조합니다.
관련 문제
- 1. PyArg_ParseTuple이 세그먼트 화 오류를 일으킴
- 2. 누가 세그먼트 화 오류를 던집니까?
- 3. 벡터 크기를 조정할 때 세그먼트 화 오류를 방지하려면 어떻게해야합니까?
- 4. 세그먼트 화 오류를 일으키는 sqlstm.sqpadto = sqlstm.sqadto
- 5. timer_create 및 timer_settime이 세그먼트 화 오류를 생성합니다.
- 6. 가상 함수가 세그먼트 화 오류를 호출합니다.
- 7. 코드가 세그먼트 화 오류를 발생시키는 이유는 무엇입니까?
- 8. (<stdlib.h> 포함)은 세그먼트 화 오류를 발생시킵니다.
- 9. 세그먼트 화 오류가
- 10. Sprintf 세그먼트 화 오류
- 11. GtkLabel 세그먼트 화 오류
- 12. 세그먼트 화 오류 - 트리 표시
- 13. qapps는 잘 실행되지만 중단 점은 세그먼트 화 오류를 생성합니다.
- 14. libVLC 함수 media_player_new()가 세그먼트 화 오류를 throw합니다.
- 15. clone() 사용 : 세그먼트 화 오류
- 16. g_file_new_for_path는()는 세그먼트 오류를
- 17. "API 제한 UnitTestFramework.dll이 이미로드되었습니다."오류를 제거하려면 어떻게해야합니까?
- 18. 오버로딩 연산자에서 세그먼트 화 오류 =
- 19. Python : openssl 세그먼트 화 오류
- 20. 세그먼트 화 된 UITable의 불안정
- 21. 메인 반환 후 세그먼트 화 오류가 발생했습니다.
- 22. C++ 연결된 목록 세그먼트 화 오류
- 23. 변수 선언으로 인해 세그먼트 화 오류가 발생합니다.
- 24. 왜 솔라리스에서이 세그먼트 화 오류가 발생합니까?
- 25. C++ 파악하기 어려운 세그먼트 화 오류
- 26. 메모리를 해제하는 동안 세그먼트 화 오류가 발생했습니다
- 27. For 루프의 C++ 세그먼트 화 오류
- 28. strlen_sse4.S가 누락되면 세그먼트 화 오류가 발생합니다.
- 29. 세그먼트 화 된 컨트롤 세그먼트 중 하나에서 uitableview를로드하는 방법은 무엇입니까?
- 30. PHP로 인한 PHP 세그먼트 화 오류
사이드 노트에서 ...이 deleteNode 함수가 링크 된 목록에서 노드를 삭제해야하는 경우에는 삭제할 수 없습니다. 삭제하려는 노드에 대한 포인터 만있는 단일 좋아하는 목록에서 노드를 삭제할 수 없습니다 (루트 노드가 전역 또는 코스에 액세스 할 수있는 경우 제외) –