double[] a;

        private void button1_Click(object sender, EventArgs e) {

            a = new double[2 * 10000 * 10000];

        }


        private void button2_Click(object sender, EventArgs e) {

            a = new double[1 * 10000 * 10000];

        }


        private void button3_Click(object sender, EventArgs e) {

            a = new double[(int) (0.5 * 10000 * 10000)];

        }



일부러 복잡한거 없으라고,

GC.Collect 다 뺐다.

아예 새 프로젝트에 저것만 만들어 넣었어.

아예 새로 실행하며 테스트하라고.


물론 저대로 해도 버튼 1번은 안먹힌다.

3번은 막눌러도 되고, 2번은 GC.Collect를 안하니 2번째에서 막히고.



가만 생각해보니,

기본자료형은 new 가 붙어도 stack 되는거라면 stack으로 간다던데,

stack이라면 2,3번 버튼도 안되어야하는거 아니냐?

stack 윈도우 기본이 1MB 인걸로 아는데.


그럼 정확하게 힙으로 하려면 어떻게 해야됨??