값 형식의 데이터를 object 형식 객체에 담는다면?

object 형식은 참조 형식이기 때문에 힙에 데이터를 할당합니다.

int 형식이나 double 형식은 값 형식이기 때문에 스택에 데이터를 할당합니다.

그렇다면 값 형식의 데이터를 object 형식 객체에 담는다면 이 경우에는

어느 메모리에 데이터가 할당될까? 스택? 힙?

class MainApp
    {
        static void Main(string[] args)
        {
            static void Main(string[] args)
            {
                int a = 123;
                object b = (object)a; // a에 담긴 값을 박싱해서 힙에 저장
                int c = (int)b;       // b에 담긴 값을 언박싱해서 스택에 저장
            }
        }
    }

이 코드에서 20은 object에 담겨 힙에 할당되고(박싱이라 한다) a는 그 주소를 참조하고 있습니다.

object a =20;

이 코드에서 a는 20이 박싱되어 저장된 힙을 참조하고 있고, b는 a가 참조하고 있는 메모리로

부터 값을 복구하려고 하는 중입니다. 이때 박싱된 값을 꺼내 값 형식 변수에 저장하는 과정을

일컬어서 “언박싱” 이라고 합니다.

object a = 20;
int b = (int)a;