- 순서
- 스택이란?
- 스택 오버플로우란?
- 스택 오버플로우 발생 원리
- 스택 오버플로우 증상
- 스택 오버플로우 예방 방법
- 스택이란?
- 함수 호출과 지역 변수 저장을 위해 프로세스 메모리 내에 할당된 영역임
- 후입선출 구조(LIFO)를 가지고 함수 호출 시 스택 프레임을 생성하며 함수 종료 시 스택 프레임을 제거함
- 스택 오버플로우란?
- 스택이 가득 차서 더 이상 스택 프레임을 할당할 수 없는 상태
- 발생하는 상황
- 무한 재귀 호출
- 너무 큰 지역 변수 배열 선언
- 스택 크기를 초과하는 깊은 함수 호출
- 스택 오버플로우 발생 원리
- 각 함수 호출마다 스택 프레임이 추가됨
- 스택은 운영체제에서 제한된 크기
- 스택 프레임 누적 > 스택 한계 초과 > 스택 오버플로우
- 스택 오버플로우 증상
- 프로그램이 비정상 종료
- 디버거에서 스택 트레이스 확인 가능
- 심한 경우 시스템 레벨 오류 발생 가능
- 스택 오버플로우 예방 방법
- 재귀 깊이 제한: 재귀 대신 반복문 사용
- 지역 변수 크기 최소화: 큰 배열은 힙에 동적 할당하여 사용
- 스택 크기 조정: OS/컴파일러에서 스택 크기 설정 가능
- 디버깅 툴 활용: 재귀 깊이, 스택 사용량 모니터링
'CS' 카테고리의 다른 글
| [CS]뮤텍스와 세마포어 (3) | 2025.08.28 |
|---|---|
| [CS]리틀 엔디안과 빅 엔디안 (1) | 2025.08.28 |
| [CS]busy-waiting (3) | 2025.08.28 |
| [CS]임계영역과 데드락 (0) | 2025.08.28 |
| [CS] 컨텍스트 스위칭 (1) | 2025.08.28 |