본문 바로가기

기본

Segmentation Fault (SIGSEGV) & Bus Error (SIGBUS)

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 한테 메모리에 값을 쓰라고 하는데 그 주소가 존재하지 않을 때 에러 발생

추가할것이 생기면 더 추가할게요.

'기본' 카테고리의 다른 글