C#中数组值存在堆中的证据

   int num = 1000000;
            B b = new B();
            B[] arr=new B[num];
            B[] mmm = new B[num];
            for (int i = 0; i < num; i++)
            {

                arr[i] = new B();

         //下面两句代码只能选一句,运行,在任务管理器中查看程序的内存占用量

         //mmm[i]=new B();  //若运行这一句,发现内存翻倍

                mmm[i] = arr[i];//若运行这一句,发现内存基本不变
            }
            Console.WriteLine("完成");
            Console.ReadLine();

            Console.WriteLine(Object.ReferenceEquals(b,arr[0]));

 

结论: 数组在内存中连续 应该是在栈中连续   但是栈中引用的对象在堆中不一定连续

posted @ 2010-09-28 00:27  再快一点  阅读(306)  评论(0编辑  收藏  举报