静态成员存储在内存中的哪个位置?堆栈/堆在C#.Net中

时间:2016-02-25 11:40:47

标签: c# class static stack heap

之前的帖子涉及值和引用类型及其内存分配。

这里我试图了解静态成员的内存分配。

我有一个简单的类,它有静态和非静态整数,如下所示。

 class Sample
 {
   public int nonStaticInt = 0;
   public  static int staticInt = 0;
 }

我的问题是,静态整数驻留在哪里?堆叠/堆。他们如何在任何对象创建之前首先进入内存。

谢谢!

1 个答案:

答案 0 :(得分:1)

分配静态变量时,它将作为Methodtable的一部分存储。 Methodtable表示在应用程序中第一次加载类时,将在appdomain中为类级变量和类内的方法分配单独的内存。

如果静态变量是基本类型,它将作为Methodtable的一部分存储。如果它是引用类型,它将存储在堆内,引用将存储在Methodtable