컴퓨터/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언어로 만든 프로그램은 하나하나 함수를 실행한 정보들을 쌓아가며 차례 되로 처리를 하게 됩니다.
이것을 스택 프레임 구조라고 말합니다.
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 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet