독개

[C#] 10화 실행되는 함수의 메모리 구조

by #독개#
/*
 * 왜 메모리를 알아야 하는가?
 * 메모리란 C#을 배워야 하기 때문에 알아야 하는게 아니라 모든 프로그램의 근간이 되는 개념이기 때문이다
 * 메모리의 구조를 안다는 것은 코드의 동작원리를 아는 것과 같다
 * 단 하나도 공짜가 없다
 * 함수의 크기는 모든 지역변수+@ (모든지역변수의 크기합 이상) 로 결정된다.
 * 호출하는 함수는 호출할때 Stack메모리에 그함수의 공간을 만든다
 */

class Player
{
    int HP = 100;
    int AT = 10;

    public void Damage(int _Dmg)
    {

    }
}

namespace _10화_실행되는_함수의_메모리_구조
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("메모리1차함수");
            int Value;
            Player NewPlayer = new Player(); //이건 Heap에 할당된다 추후설명
            NewPlayer.Damage(3);
        }
    }
}

첫프로그램 실행시 Main함수의 공간을 할당받음


Console.WriteLine("메모리1차함수"); 스택에 생겼다가 실행을 완료하고 사라진다

그다음 NewPlayer.Damage 라는 함수가 다시 스택에 생겼다가 실행을 완료하면 사라진다 이때 지역변수도 다사라지겠지

그리고 다사라지고 메인함수의 { } 끝으로오면 메인함수도 사라지면서 프로그램은 모든 메모리를 os에 반납하고 끝난다

 

블로그의 정보

독한 개발자

#독개#

활동하기