< 스택 메모리란? >

스택 메모리는 프로그램이 실행되는 동안 사용되는 메모리 영역 중 하나로, 함수 호출과 로컬 변수를 저장하는데 사용된다. "스택"이라는 이름은 데이터를 쌓아 올리는 형태로 관리되기 때문에 붙여진 이름이다. 함수가 호출될 때마다 새로운 스택 프레임이 생성되고, 함수가 종료되면 해당 스택 프레임이 제거된다.

출처 Wikipedia

< 로컬 변수는 어떻게 관리될까? >

로컬 변수란, 특정 코드 블록 내에서만 사용되는 변수를 말한다. 중괄호 {}로 둘러싸인 영역에서 선언된 변수들이 이에 해당한다.

using System;

namespace StackMemoryExample
{
    class Program
    {
        static void MyFunction()
        {
            int a = 10; // 로컬 변수
            Console.WriteLine(a);
        } // 여기서 'a'는 스택에서 제거된다.

        static void Main(string[] args)
        {
            MyFunction();
            // 여기서는 'a'에 접근할 수 없다.
        }
    }
}


MyFunction이라는 메서드 안에서 a라는 로컬 변수를 선언하고 있다. 이 메서드가 호출되면 a 변수가 스택 메모리에 할당된다. 그리고 메서드가 끝날 때 (닫는 중괄호 }를 만날 때), 스택에서 a 변수가 제거된다. 이 시점 이후로는 a 변수에 접근할 수 없다.

< 왜 이렇게 동작할까? >

스택 메모리는 효율적인 메모리 관리를 위해 이렇게 동작한다. 함수 호출이 끝나면 그 안에서 사용된 로컬 변수들은 더 이상 필요하지 않으므로, 메모리를 효율적으로 활용하기 위해 자동으로 해제되는 것이다.

 

 

Reference : https://en.wikipedia.org/wiki/Stack-based_memory_allocation

 

Stack-based memory allocation - Wikipedia

From Wikipedia, the free encyclopedia Form of computer memory allocation A typical stack, storing local data and call information for nested procedure calls (not necessarily nested procedures). This stack grows downward from its origin. The stack pointer p

en.wikipedia.org

 

'Developer 지식' 카테고리의 다른 글

JVM에 대한 이해 및 JRE,JDK  (0) 2023.06.06
스크립트 언어와 컴파일 언어의 차이점  (0) 2023.06.06
Process와 Thread  (0) 2023.06.06
자료구조와 알고리즘이란?  (0) 2023.06.02
Port kill 방법  (0) 2023.05.28

+ Recent posts