값 형식은 스택에 할당되고 참조 형식은 힙에 할당된다. 그런데 값 형식임에도 그것이 배여로 선언되

면 힙에 할당된다. stackalloc 예약어는 값 형식의 배열을 힙이 아닌 스택에 할당하게 만든다.

int* pArray = stackalloc int[1024]; // int 4byte * 1024 == 4KB 용량을 스택에 할당

포인터 연산을 사용하기 때문에 stackalloc도 unsafe 문맥에서 사용해야 한다.

그런데 왜 스택에 배열을 만들고 싶을까? 이유는 간단하다. 힙을 사용하지 않으므로 가비지 수집기의

부하가 없다는 장점 때문이다. 이는 게임 프로그램을 만들 때 유용할 수 있는데, 끊임없이 호출되는

메서드 내에서 힙에 메모리를 할당하면 가비지 수집기로 인해 끊김 현상이 발생할 수 있다. 이럴 때

stackalloc을 사용하면 가비지 수집기의 호출 빈도를 조금이라도 낮출 수 있어 좀 더 원활한 게임

실행이 가능해진다.

그럼 반대로 왜 스택에 배열을 만들고 싶지 않을까? 스택은 스레드마다 할당되는 메모리로 윈도우의

경우 기본값으로 1MB 규모의 크기를 갖는다. 이처럼 제한된 자원을 남용하면 자칫 프로그램의 실행

에 오류를 발생시킬 수 있으므로 사용할 때 신중을 가해야 한다.

이 떄문에 일부 특수한 용도를 제외하고는 stackalloc 예약어가 사용되는 경우는 거의 없다.