🔖 메모리 구조에 대해서 잘 모르시는 분들은 이전 글을 참고해 주세요!

  2025.02.12 - [c#] - [c#]힙메모리와 스택 메모리

 

[c#]힙메모리와 스택 메모리

메모리의 공간 1. 코드 (code) 영역2. 데이터 (data) 영역3. 스택 (stack) 영역4. 힙 (heap) 영역  □  코드(code) 영역            ■ 실행할 프로그램의 코드가 저장되는 영역            ■ 텍스트

youcheachae.tistory.com

 

📝 스택 프레임

  스택 프레임이란 무엇인가 ? (stack frame)

              스택 영역에 차례대로 저장되는 함수의 호출정보

              함수가 호출될 때 스택에 저장되는 내용 

                        함수의 매개변수

                         호출이 끝난 뒤 돌아갈 반환 주소 값

                         함수에서 선언된 지역변수

              스택에 올라간 함수가 모두 끝난뒤에,

           스택 프레임에 저장된 정보를 바탕으로 함수가 호출되기 이전 상태로 돌아갈 수 있다 

 

📝 스택 프레임의 동작 방식  

public static void Fun1() 
{
    Fun2();     // Fun2() 호출
}

public static void Fun2() 
{

}

static void Main(string[] args)
{

    Fun1();	// Fun1() 호출
}

 

  메서드 호출 시 동작

1. 프로그램이 실행되면, 가장 먼저 main() 함수가 호출되어 main()의 스택 프레임이 스택에 저장됨

2, fun1() 함수를 실행하면, 해당함수의 매개변수, 반환 주소값, 지역 변수 드으이 스택 프레임이 스택에 저장됨

3. fun2() 함수를 실행하면, 해당함수의 매개변수, 반환 주소값, 지역 변수 드으이 스택 프레임이 스택에 저장됨

 

  메서드 완료 시 동작

1. fun2()함수의 모든 작업이 완료되면, fun2()의 스택프레임만이 스택 메모리에서 제거됨

2. fun1()함수의 모든 작업이 완료되면, fun2()의 스택프레임만이 스택 메모리에서 제거됨

3. main()함수의 모든 작업이 완료되면 , main()의 스택프레임만이 스택 메모리에서 제거됨

4. 프로그램이 종료

 


스택프레임

https://www.tcpschool.com/c/c_memory_stackframe

 

+ Recent posts