Skip to content

Segmentation fault

세그멘테이션 결함(Segmentation Fault)은 컴퓨터 소프트웨어의 실행 중에 일어날 수 있는 특수한 오류이다. 세그멘테이션 위반, 세그멘테이션 실패라고도 하며, 세그폴트(Segfault)로 줄여서 쓰기도 한다. 세그멘테이션 결함은 프로그램이 허용되지 않은 메모리 영역에 접근을 시도하거나, 허용되지 않은 방법으로 메모리 영역에 접근을 시도할 경우 발생한다. (예를 들어, 읽기 전용 영역에 어떤 내용을 쓰려고 시도하거나, 운영 체제에서 사용하는 영역에 다른 내용을 덮어쓰려 하는 경우) 모토로라 68000 등의 프로세서 기반 시스템들은 이러한 오류를 어드레스(adress) 혹은 버스(bus) 오류로 취급하는 경향이 있다.

세그멘테이션은 운영 체제에서 사용하는 메모리 관리 및 보호의 한 기법이다. 이것은 페이징으로 대부분 대체되었지만, 세그멘테이션이라는 용어는 '세그멘테이션 결함'이라는 용어에서 볼 수 있듯이 여전히 사용되고 있다. 주로 사용되는 메모리 관리 정책이 페이징이지만 몇몇 운영 체제는 여전히 일부 논리 레벨에서 세그멘테이션을 사용하기도 한다.

유닉스 계열 운영 체제들에서는, 잘못된 메모리에 접근하는 프로세스는 SIGSEGV 신호를 받는다. 마이크로소프트 윈도에서는, 잘못된 메모리에 접근하는 프로세스는 STATUS_ACCESS_VIOLATION 예외 처리를 받는다.

See also

Favorite site

References


  1. Understanding_EXC_BAD_ACCESS.pdf