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++)
{
}
Console.WriteLine("完成");
Console.ReadLine();
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(); //若运行这一句,发现内存翻倍
}
Console.WriteLine("完成");
Console.ReadLine();
Console.WriteLine(Object.ReferenceEquals(b,arr[0]));
结论: 数组在内存中连续 应该是在栈中连续 但是栈中引用的对象在堆中不一定连续