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;