C 언어 - Stack Frame (스택 프레임)

컴퓨터/C

728x90
반응형

스택에 대한 개념 먼저 알아보기

 

 

자료구조 - Stack(스택)의 개념

Stack(스택) Stack은 사전적 의미로 쌓다, 포개다, 채우다를 의미합니다. 자료구조 개념의 하나인 Stack은 바로 쌓아 올리는 개념입니다 한번 쌓아 올리다를 상상해 볼까요? 이사를 하기 위해 박스 안

blog-of-gon.tistory.com

메모리 스택 영역

메모리의 구조는 크게 코드 영역 / 데이터 영역 / 힙 영역 / 스택 영역이 있습니다.

이 중 스택 영역은 함수의 호출 시 함수의 지역변수와 매개변수가 저장되는 영역입니다.

이 스택 영역에서 함수들의 정보를 쌓고 처리하는 것을 스택 프레임이라고 합니다.

C언어 프로그램의 구조는 스택 프레임 구조. 

C언어 프로그램은 다양한 함수들을 호출하면서 프로그램이 실행됩니다.  

함수가 호출되면 그 함수 안에 내용들이 순차적으로 메모리 스택 영역에 차곡차곡 쌓이게 됩니다. 그리고 쌓인 내용을 가장 최근에 들어온 내용부터 하나씩 하나씩 수행을 하게 됩니다. 

 

스택 프레임 구조 확인하기 

아래의 소스코드를 시각화해보면 스택의 개념을 이용하여 C언어 프로그램이 구동한다는 것을 쉽게 확인할 수 있습니다.

void function2()
{
	printf("function2 함수 시작\n");
	printf("function2 함수 끝\n");
	return;
}
void function1()
{
	printf("function1 함수 시작\n");
	function2();
	printf("function1 함수 끝\n");
	return;
}
int main()
{
	printf("main 함수 시작\n");
	function1();
	printf("main 함수 끝\n");

	return 0;
}

스택의 개념을 알고 있고 위의 소스코드를 실행한 결과를 보면 C언어로 작성된 프로그램은 스택의 구조로 이루어져 있다는 것을 알 수 있을 것입니다.  조금 더 알기 쉽게 그려보자면 다음과 같습니다.

위의 구조처럼 C언어로 만든 프로그램은 하나하나 함수를 실행한 정보들을 쌓아가며 차례 되로 처리를 하게 됩니다. 

이것을 스택 프레임 구조라고 말합니다.

 

728x90
반응형

'컴퓨터 > C' 카테고리의 다른 글

C 언어 - 소스파일 나누기  (0) 2021.06.28
C 언어 - static 키워드 (정적 키워드)  (0) 2021.06.26
C 언어 - 다중 포인터  (2) 2021.06.24
C 언어 - 구조체 포인터  (0) 2021.06.23
C 언어 - typedef 키워드  (0) 2021.06.22

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :