这是一个理论问题,我想测试一下我对内存中对象分配的理解。我们知道对象是在托管堆上分配的,而值类型是在堆栈内存上分配的,原因是CLR将在托管堆上动态创建所需的对象内存,而固定长度的值类型可以在堆栈上维护。对象引用也存储在堆栈中。
现在考虑一下这个场景:
public class MyClass
{
public int t;
public string str;
}
public class Program {
public static void Main()
{
int a = 5;
MyClass obj = new MyClass();
obj.t = 7;
obj.str = "any string";
Console.WriteLine(obj.str);
}
}
我的问题如下:
MyClass
包含一些值类型,那么它们将在哪里分配?Main
的值类型也在类Program
内,那么这些值将在何处分配?