[자료구조] 스택 프레임(Stack Frame)

Doorbals·2023년 1월 5일
0

자료구조

목록 보기
2/5

스택 프레임(Stack Frame)

메모리의 스택 영역은 함수의 호출과 관계되는 지역 변수 및 매개변수가 저장되는 영역이다.
스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.

함수가 호출될 때 스택에는 함수의 매개변수, 함수 호출이 끝난 뒤 돌아갈 반환 주소값, 함수 내부 지역 변수가 저장된다. 이렇게 스택 영역에 차례대로 저장되는 함수의 호출 정보를 스택 프레임(Stack Frame)이라고 한다.


스택 프레임의 동작 방식

[예시 코드]

int main()
{
	func1();
}

void func1()
{
	func2();
}

void func2()
{
	
}

0) 프로그램이 실행된다.
1) main() 함수가 실행되고, main() 함수의 스택 프레임이 스택에 저장된다.
2) func1() 함수가 실행되고, func1() 함수의 스택 프레임이 스택에 저장된다.
3) func2() 함수가 실행되고, func2() 함수의 스택 프레임이 스택에 저장된다.
4) func2() 함수의 모든 작업이 완료되어 반환되면 func2() 함수의 스택 프레임이 스택에서 제거된다.
5) func1() 함수의 모든 작업이 완료되어 반환되면 func1() 함수의 스택 프레임이 스택에서 제거된다.
6) main() 함수의 모든 작업이 완료되어 반환되면 main() 함수의 스택 프레임이 스택에서 제거된다.
7) 프로그램이 종료된다.


비주얼 스튜디오의 호출 스택

비주얼 스튜디오에서는 현재 중단점 위치에서 어떤 함수가 호출되어 스택에 쌓여있는지 확인할 수 있다.


👁️‍🗨️ 참조
http://www.tcpschool.com/c/c_memory_stackframe

profile
게임 클라이언트 개발자 지망생의 TIL

0개의 댓글