对象分配

时间:2014-08-13 11:34:51

标签: c# memory memory-management

这是一个理论问题,我想测试一下我对内存中对象分配的理解。我们知道对象是在托管堆上分配的,而值类型是在堆栈内存上分配的,原因是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);

    }
}

我的问题如下:

  1. 在这种情况下,堆栈和堆将如何显示?
  2. MyClass包含一些值类型,那么它们将在哪里分配?
  3. Main的值类型也在类Program内,那么这些值将在何处分配?

0 个答案:

没有答案