... | ... | @@ -21,10 +21,10 @@ |
|
|
> 값/참조 형식의 차이점을 이해하려면 반드시 스택(Stack)과 힙(Heap)을 이해할 필요가 있다.
|
|
|
>
|
|
|
> **stack**
|
|
|
> 윈도우 프로그램은 기본적으로 하나의 스레드를 갖는다. 그리고 개별스레드마다 전용으로 사용할 수 있는 저장소가 메모리에 할당되는데 그 영역을 **++스택++**이라고 한다. 스택은 기본적으로 1MB공간만 스레드에 할당한다. 1MB라는 용량은 일반적인 메서드 호출 상황에서 스택 오버플로를 발생시키기에는 여유가 있는 공간이다. 하지만 재귀 호출을 사용하는 프로그램에는 문제가 발생할 수 있다.
|
|
|
> 윈도우 프로그램은 기본적으로 하나의 스레드를 갖는다. 그리고 개별스레드마다 전용으로 사용할 수 있는 저장소가 메모리에 할당되는데 그 영역을 **스택**이라고 한다. 스택은 기본적으로 1MB공간만 스레드에 할당한다. 1MB라는 용량은 일반적인 메서드 호출 상황에서 스택 오버플로를 발생시키기에는 여유가 있는 공간이다. 하지만 재귀 호출을 사용하는 프로그램에는 문제가 발생할 수 있다.
|
|
|
|
|
|
> **heap**
|
|
|
> **++힙++**은 프로그램에서 필요에 의해 메모리를 사용하겠다고 요청했을 때 사용할 수 있는 저장소다. 힙의 경우 별도로 명시하지 않는 한 CLR에서는 관리 힙(managed heap)을 가리킨다. 관리 힙이란 CLR의 가비지 수집기(GC:Garbage Collector)가 할당/해제를 관리하기 때문에 붙여진 이릅이다. C#에서 new로 할당되는 모든 참조형 객체는 힙에 할당된다. 메모리 해제는 GC가 자동으로 해준다.
|
|
|
> **힙**은 프로그램에서 필요에 의해 메모리를 사용하겠다고 요청했을 때 사용할 수 있는 저장소다. 힙의 경우 별도로 명시하지 않는 한 CLR에서는 관리 힙(managed heap)을 가리킨다. 관리 힙이란 CLR의 가비지 수집기(GC:Garbage Collector)가 할당/해제를 관리하기 때문에 붙여진 이릅이다. C#에서 new로 할당되는 모든 참조형 객체는 힙에 할당된다. 메모리 해제는 GC가 자동으로 해준다.
|
|
|
|
|
|
<br>
|
|
|
* **스택에 저장된 값 형식의 데이터**
|
... | ... | |