C언어 C++ Programming

[C언어]지역변수와 스택메모리란? 예제로 이해하기(Local Variable, Stack)

끄적끄적아무거나 2023. 7. 12. 08:18
반응형

 

목차

     

     

     

     

    [C Programming]지역변수와 스택메모리

     


    C 언어에서 "stack"은 프로그램 실행 중에 사용되는 메모리 영역 중 하나를 가리키는 용어입니다. Stack은 주로 함수 호출과 관련된 데이터를 저장하는 데 사용되며, 지역 변수, 함수의 매개변수, 반환 주소 등을 저장하는 데에도 활용됩니다.

     

    Stack은 RAM(Random Access Memory)에 속하는 메모리 영역입니다. RAM은 컴퓨터가 프로그램 및 데이터를 실시간으로 읽고 쓸 수 있는 주 메모리로, CPU가 직접 액세스할 수 있는 공간입니다. Stack은 RAM의 일부로, 주로 스택 포인터라고 불리는 특정 레지스터를 사용하여 메모리 상에서 스택의 현재 위치를 추적합니다.

     

    반면, 캐시 메모리(cache memory)는 CPU와 주 메모리(RAM) 사이에서 데이터를 임시로 저장하고 빠르게 액세스할 수 있는 고속 메모리입니다. 캐시 메모리는 주로 CPU의 성능을 향상시키기 위해 사용되며, 스택(stack)과는 다른 개념입니다.

     

    요약하자면, C 언어에서의 "stack"은 프로그램 실행 중에 사용되는 메모리 영역으로, RAM에 위치한 스택을 가리키는 용어입니다. 캐시 메모리는 CPU와 주 메모리 사이에서 데이터를 임시로 저장하는 고속 메모리입니다.

     

     

     

     

     

     

    [C Programming]지역변수와 스택메모리 예제 풀이

     

     

    그림1, 출처: https://craftinginterpreters.com/local-variables.html

     

    앞서 소개한 것과 같이 스택에서는 지역 변수를 저장합니다. 지역 변수는 { } 내에서 선언된 변수로 { } 밖에서 다시 호출 시 동작이 되지 않습니다.

     

    그림1은 해당 내용을 쉽게 설명해줍니다. 

     

    var a의 경우 {}밖에서 선언되어서 스택에 계속 존재합니다. 다음으로 var b가 선언되고 순차적으로 변수들이 선언됩니다. 마치 접시가 쌓이는 것처럼 { }안에 변수가 들어갈 경우 PUSH 형태로 변수를 stack에 넣어주고 { }를 벗어난 변수들은 POP의 형태로 Stack에서 빠져나가서 더 이상 사용을 할 수 없게 됩니다. 

     

    스택의 장점은 지역 변수를 그때 그때 상황에 맞춰 사용하고 버림으로서 메모리를 절약할 수 있게 해줍니다.

     

     

     

    반응형