int[] myIntegers;
myIntegers = new int[100];
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,是新的int [100]在堆上生成数组吗?从我通过c#读到的CLR,答案是肯定的.但我无法理解的是,数组中的实际int会发生什么.由于它们是值类型,我猜它们必须被装箱,因为我可以,例如,将myIntegers传递给程序的其他部分,如果它们一直留在堆栈上它会使堆栈混乱.还是我错了?我猜他们只是盒装,并且只要数组存在就会活在堆上.
我对Stack vs Heap之间的内存分配基础感到困惑.根据标准定义(每个人都说的东西),所有值类型都将被分配到堆栈,参考类型将进入堆.
现在考虑以下示例:
class MyClass
{
int myInt = 0;
string myString = "Something";
}
class Program
{
static void Main(string[] args)
{
MyClass m = new MyClass();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,内存分配将如何在c#中发生?MyClass(即m)的对象是否会完全分配给堆?也就是说,int myInt和string myString既会去堆?
或者,该对象将分为两部分,并将分配给两个内存位置,即堆栈和堆?