Segmentation fault의 원인을 요약하자면
- Dereferencing NULL pointers ! – 널포인터에 어떤 값을 대입시
- 존재하지 않는 메모리 주소를 접근하려고 했을 경우(바깥에서 돌고있는 프로세스가 있었는데 그걸 참조했다 던지)
- 메모리 접근권한이 없을 때
- RO 영역 메모리를 Write하려고 했을 때
- 역참조 또는 초기화되지 않은 포인터에 값 대입 (허상포인터가 랜덤한 메모리 주소를 가르킬때)
- free 해버린 포인터에 값 대입 (허상포인터가 freed/deallocated/deleted 경우)
- 버퍼 오퍼플로우 ( 이것은 limits 문제 )
- 스택 오버플로우 ( 역시 limits 문제, bash창에서 커맨드로 ulimit를 쳐서 확인 가능 )
- 컴파일이 정확하게 안되었는데 프로그램을 execute 하려는 경우