프로그램 실행 중 함수가 호출되면 사용되는 스택 영역
스택 프레임
정의
- 컴퓨터 프로그램 실행 중에 함수 호출이 발생하면 실행 정보를 저장하기 위한 데이터 구조.
- 스택 프레임은 호출 스택(Call Stack)에서 사용되며, 프로그램의 실행 흐름과 함수 호출 및 반환을 추적하는데 중요한 역할을 한다.
특징
- 함수 호출 시, 실행한 함수의 지역 변수, 매개 변수, 함수의 실행 상태를 나타내는 정보(반환 주소, 호출자의 스택 프레임 포인터) 등의 정보가 스택 프레임에 저장된다.
- 함수 호출당 하나씩 생성되며, 호출 스택에 쌓이게 된다.
- 스택 구조를 이루고 있어 LIFO 방식으로 관리된다.
- 가장 최근에 호출된 함수의 스택 프레임이 가장 위에 위치하고, 가장 먼저 호출된 함수의 스택 프레임이 아래에 위치한다.
스택 오버 플로우
원인
- 스택 메모리는 한정된 크기를 가진다.
- 함수 호출마다 스택 프레임이 생성되어 스택에 추가된다.
- 재귀 함수 호출이 깊게 중첩되거나 반복적인 함수 호출이 너무 많아지면 스택의 한계를 초과하고 스택 오버 플로우가 발생한다.
해결방법
- 재귀 함수 사용시 종료 조건을 명확하게 정의한다.
- 재귀 호출을 사용할 때, 재귀의 깊이를 제한하거나, 반복적인 함수 호출을 줄인다
'프로그래밍 언어 > 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 |