기본
Segmentation Fault (SIGSEGV) & Bus Error (SIGBUS)
슬릭데브
2021. 5. 12. 15:21
Segmentation fault (SIGSEGV) :
- OS가 프로그램 에러를 발견하고 더 이상 실행할 수 없을 때 생기는 에러
- Signal 11
- Segmentation Violation의 준말
원인:
- 수행하는 프로그램이 할당 된 메모리 밖을 참조하려 하거나 read only memory에 값을 쓰려고 할 때 발생
예제:
- uninitialized pointer를 사용했을 때
- Null Pointer를 de- referencing했을 때
- 해당 프로그램 범위 밖의 memory를 참조하려 할 때 (array의 out of bounds 같은 맥락)
- de-allocated된 메모리를 참조하려 할 때
Bus Error (SIGBUS):
- Signal 10
- Bus Error 준말
원인:
- 해당 프로그램이 참조하려는 메모리 주소가 제대로된 주소가 아닐 때 발생
예제:
- 해당 프로그램이 CPU 한테 메모리에 값을 쓰라고 하는데 그 주소가 존재하지 않을 때 에러 발생
추가할것이 생기면 더 추가할게요.