카테고리 없음

값 형식과 참조 형식

신정훈 2022. 7. 5. 22:07

값 형식(Value Types)은 변수가 값을 담는 데이터 형식을 말하고, 참조 형식(Reference Type)은 변수가 값 대신 값이 있는 곳의 위치(참조)를 담는 데이터형식이다.

 

스택과 값 형식
값 형식의 변수는 Stack영역에 저장된다.  프로그램실행이 " } "를 만나면 메모리에 제거됩니다.

 

힙과 참조 형식

따고로 청소부가 필요없는 스택과 달리 힙은 저장된 데이터를 스스로 제거하지 못한다. 대신청소부를 따로 고용하고 있는데 CLR의 가비지 컬렉터(Garbage Collector)이다.

 

왜 스택메모리 영역이 있는데 굳이 가비지 컬렉터가 필요한 힙 영역을 사용하는 걸까?

 

스택에 쌓인 데이터들은 코드블록이 사라지는 시점에 함께 제거된다. 그래서 언제까지라도 프로그래머가 원한다면 데이터를 살릴 수 있는 또 다른 메모리 영역을 CLR이 제공하는것이다. 프로그래머가 힙에 데이터를 올려놓으면, 코드 블록이 종료되는 지점과 상관없이 그 데이터는 계속 생명을 유지하고 더 이상 사용하지 않는 쓰레기가 됐을때 가비지 컬렉터가 가져간다. 그제서야 메모리에서 사라진다.