CS

[CS]스택 오버 플로우

programmer-faust 2025. 8. 28. 04:15
  • 순서
    1. 스택이란?
    2. 스택 오버플로우란?
    3. 스택 오버플로우 발생 원리
    4. 스택 오버플로우 증상
    5. 스택 오버플로우 예방 방법
  • 스택이란?
    1. 함수 호출과 지역 변수 저장을 위해 프로세스 메모리 내에 할당된 영역임
    2. 후입선출 구조(LIFO)를 가지고 함수 호출 시 스택 프레임을 생성하며 함수 종료 시 스택 프레임을 제거함
  • 스택 오버플로우란?
    1. 스택이 가득 차서 더 이상 스택 프레임을 할당할 수 없는 상태
    2. 발생하는 상황
      • 무한 재귀 호출
      • 너무 큰 지역 변수 배열 선언
      • 스택 크기를 초과하는 깊은 함수 호출
  • 스택 오버플로우 발생 원리
    1. 각 함수 호출마다 스택 프레임이 추가됨
    2. 스택은 운영체제에서 제한된 크기
    3. 스택 프레임 누적 > 스택 한계 초과 > 스택 오버플로우
  • 스택 오버플로우 증상
    1. 프로그램이 비정상 종료
    2. 디버거에서 스택 트레이스 확인 가능
    3. 심한 경우 시스템 레벨 오류 발생 가능
  • 스택 오버플로우 예방 방법
    1. 재귀 깊이 제한: 재귀 대신 반복문 사용
    2. 지역 변수 크기 최소화: 큰 배열은 힙에 동적 할당하여 사용
    3. 스택 크기 조정: OS/컴파일러에서 스택 크기 설정 가능
    4. 디버깅 툴 활용: 재귀 깊이, 스택 사용량 모니터링

'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