프로그램을 실행할 때, 일부 메모리 공간은 데이터용으로 할당된다. 이 데이터 공간은 놀리적으로 힙과 스택이라는 두 부분으로 나뉜다.
값 형식은 스택에 할당되고 객체는 힙에 존재하게 된다. 값 형식에 따라 스택에 몇 바이트가 설정되는지 결정된다.
예를 들어 int는 4바이트, long은 8바이트이다. 참조 변수를 선언할 때 몇 바이트를 스택에 확보하지만, 이 메모리에는 객체의 데이터가 존재하지 않고 힙에 존재하는 객체의 주소를 담고 있다.
Book book; Book 클래스 참조 변수인 book은 스택에 할당되고, book의 초기 값은 아직 객체를 할당하지 않았기 때문에 null이다. Book book = new Book(); 위의 경우는 Book의 인스턴스를 생성하면서 힙에 저장하고 참조 변수 book에 인스턴스의 주소를 할당한다.
객체는 하나 이상의 참조 변수에서 참조할 수 있다. 예를 들면 다음과 같다.
Book myBook = new Book(); Book yourBook = ...
#
c샵
#
메모리
#
메모리할당
#
스택
#
씨샵
#
힙
원문 링크 : [C#] 메모리상의 객체