스택 프레임(Stact Frame)과 스택 오버 플로우(Stack Overflow)

2023. 10. 3. 23:35·프로그래밍 언어/C#
프로그램 실행 중 함수가 호출되면 사용되는 스택 영역

스택 프레임

정의

  • 컴퓨터 프로그램 실행 중에 함수 호출이 발생하면 실행 정보를 저장하기 위한 데이터 구조.
  • 스택 프레임은 호출 스택(Call Stack)에서 사용되며, 프로그램의 실행 흐름과 함수 호출 및 반환을 추적하는데 중요한 역할을 한다.

특징

  • 함수 호출 시, 실행한 함수의 지역 변수, 매개 변수, 함수의 실행 상태를 나타내는 정보(반환 주소, 호출자의 스택 프레임 포인터) 등의 정보가 스택 프레임에 저장된다.
    • 함수 호출당 하나씩 생성되며, 호출 스택에 쌓이게 된다.
  • 스택 구조를 이루고 있어 LIFO 방식으로 관리된다.
    • 가장 최근에 호출된 함수의 스택 프레임이 가장 위에 위치하고, 가장 먼저 호출된 함수의 스택 프레임이 아래에 위치한다.

스택 오버 플로우

원인

  1. 스택 메모리는 한정된 크기를 가진다.
  2. 함수 호출마다 스택 프레임이 생성되어 스택에 추가된다.
  3. 재귀 함수 호출이 깊게 중첩되거나 반복적인 함수 호출이 너무 많아지면 스택의 한계를 초과하고 스택 오버 플로우가 발생한다.

해결방법

  1. 재귀 함수 사용시 종료 조건을 명확하게 정의한다.
  2. 재귀 호출을 사용할 때, 재귀의 깊이를 제한하거나, 반복적인 함수 호출을 줄인다

'프로그래밍 언어 > C#' 카테고리의 다른 글

비동기 프로그래밍  (0) 2023.12.25
람다식 () =>  (0) 2023.11.01
C#과 .NET Framework  (0) 2023.10.08
컴파일(Compile)과 런타임(Runtime)  (0) 2023.10.03
메모리 구조  (0) 2023.10.02
'프로그래밍 언어/C#' 카테고리의 다른 글
  • 람다식 () =>
  • C#과 .NET Framework
  • 컴파일(Compile)과 런타임(Runtime)
  • 메모리 구조
가든_
가든_
  • 가든_
    Code Garden
    가든_
  • 전체
    오늘
    어제
    • 글 목록 (60)
      • 프로그래밍 언어 (11)
        • JAVA (0)
        • C++ (2)
        • C# (9)
      • 개발툴 (24)
        • Visual Studio (0)
        • Visual Studio Code (1)
        • Eclipse (1)
        • Unity (19)
        • Unreal (0)
        • Spring (1)
        • SpringBoot (0)
        • Vue (2)
      • 디자인 패턴 (6)
      • 백엔드 (4)
        • MySQL (1)
        • Servlet (3)
      • 프론트엔드 (4)
        • HTML (3)
        • CSS (0)
        • Javascript (1)
      • 알고리즘 (10)
        • 공식 (3)
        • 백준 (6)
        • SW Expert Academy (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    12738
    Adapter 패턴
    ()=>
    런타임 상수
    행동 UML 다이어그램
    상태공간트리
    스택
    RDBM
    컴파일 상수
    구조적 UML 다이어그램
    Reflex
    Factory 패턴
    Unity
    c#
    UniRX
    SetTile
    FixedUpdate
    클래스 어댑터
    Adaptee
    Abstract Factory 패턴
    구조패턴
    오브젝터 어댑터
    chatGPT
    DI
    다이어그램 그리기
    HTML
    MVC
    swea2112
    Proxy 패턴
    Java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
가든_
스택 프레임(Stact Frame)과 스택 오버 플로우(Stack Overflow)
상단으로

티스토리툴바