세그먼테이션 오류 (Segmentation Fault)
1. 정의
세그먼테이션 오류(Segmentation Fault)란, 프로그램이 허용되지 않은 메모리 영역에 접근하려고 시도할 때 운영체제가 해당 프로세스를 강제 종료시키며 발생하는 오류를 말한다.
주로 C, C++ 등 포인터를 직접 다루는 언어에서 발생하며, 하드웨어 메모리 보호 기능과 운영체제의 메모리 관리 기법(MMU, Memory Management Unit)에 의해 탐지된다.
개발 중 디버깅 과정에서 빈번히 발견되며, 보안 취약점(버퍼 오버플로우)과 직결될 수 있다.
※ 프로세스 메모리 구조
프로세스 메모리 구조는 코드(Code), 데이터(Data), 스택(Stack), 힙(Heap) 영역으로 구성된다. 각 영역은 프로세스의 실행에 필요한 데이터를 저장하고 관리하는 역할을 한다.
- Code : 실행할 코드 (기계어)
- Data : 전역 변수, 정적 변수 등
- Heap : 사용자 동적 할당 영역
- Stack : 지역변수, 함수의 매개변수 등

2. 주요 원인
| 원인 | 설명 |
| 잘못된 포인터 참조 | 초기화되지 않은 포인터, NULL 포인터 역참조 |
| 경계 초과 접근 | 배열 인덱스 범위 초과 |
| 해제된 메모리 접근 | free/delete 이후 포인터 사용 |
| 읽기 전용 영역 수정 | 문자열 상수 수정 시도 |
| 스택 오버플로우 | 재귀 호출 무한 반복 등으로 스택 한계 초과 |
3. 대응 방안
(1) 포인터 초기화 및 유효성 검사
NULL 체크, 범위 검사
(2) 메모리 동적 할당·해제 규칙 준수
해제 후 포인터 NULL 재설정
(3) 배열 및 버퍼 경계 검사
안전한 함수(strncpy, snprintf 등) 사용
(4) 디버깅 툴 활용
gdb, valgrind, AddressSanitizer 등을 통한 메모리 접근 추적
4. 결론
세그먼테이션 오류는 프로그램 안정성과 보안에 직결되므로, 메모리 안전성 확보와 철저한 검증이 필요하다. 안전한 프로그래밍 습관과 정적·동적 분석 도구 활용이 필수적이다.
'IT Tech.' 카테고리의 다른 글
| (AI) 오차 역전파(Backpropagation)와 경사하강법(Gradient Descent) (0) | 2025.08.14 |
|---|---|
| (AI) 인공신경망 (Artificial Neural Network, ANN) (6) | 2025.08.14 |
| (정보전략) 공급망관리(SCM, Supply Chain Management) (8) | 2025.08.13 |
| (DB) 데이터베이스 정규화 (Database Normalization) (4) | 2025.08.13 |
| (AI) 머신러닝 학습 유형 (지도학습, 비지도학습, 강화학습) (3) | 2025.08.13 |