[C#] 메모리 구조 -1

YongSeok·2022년 10월 7일
0
post-thumbnail

왜 메모리를 알아야 할까❓❓

메모리란 사실 C# 을 배워야 하기 때문에 알아야 하는게 아닌
C#이 아닌 모든 프로그램의 근간이 되는 개념이기 때문이다

이말은 즉슨, 모든 프로그램은 공짜는 없다. 메모리를 지불한다. 메모리의 구조를 안다는 것은
코드의 동작원리를 아는 것과 같다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{    
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    private void Start()
    {
        Player player = new Player(); // 객체를 만듬.
        // 객체를 만들었다는 것은 메모리를 지불했다는것을 뜻한다.
        // 근본적인 내용은 단 하나도 공짜가 없다는 뜻이다.
    }
}

우리가 프로그래밍을 하면 우리의 내용들이 램안에서 자리를 빌려 사용하고 있다

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
	int HP = 100;
    int attackDamage = 10;
    
    public void Damage(int damage)
    {
    }
}

위와같이 매번 코드를 짤때 선언하는 변수들은 메모리구조의 코드영역에 들어가게 된다.

  • 코드영역에 올라가는 녀석들의 특징으로는 수정이 불가는한 상수라는 점이다
  • 쉽게 말해 클래스의 내용이 코드영역에 들어간다고 생각하면 된다

스택 영역에서는

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    private void Start()
    {
        Player player = new Player();
        player.Damage(10);
    }
}

이런식으로 Player.Damage(10); 라는 함수를 실행하면 스택영역에 할당 되며 그 함수의 지역( "}" ) 을 벗어나게되는 순간 스택영역에서 살아지게 된다

0개의 댓글