【问题标题】:Where are static members stored in memory? stack/ heap in C# .Net [duplicate]静态成员存储在内存中的什么位置? C#.Net中的堆栈/堆[重复]
【发布时间】:2016-06-08 03:58:13
【问题描述】:

前面的文章讨论了值和引用类型以及它们的内存分配。

这里我想了解一下静态成员的内存分配。

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

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

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

谢谢!

【问题讨论】:

  • 根据我的理解,整数留在堆栈内存中一般为假。在这种情况下,nonStaticInt 将留在堆中。
  • 依赖于实现。为什么需要知道这些信息?
  • @CodyGray 因为这是我的面试问题之一! :)

标签: c# class static heap-memory stack-memory


【解决方案1】:

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

如果静态变量是原始类型,它将作为 Methodtable 的一部分存储。如果是引用类型,则存放在堆内,引用存放在Methodtable中

【讨论】:

    猜你喜欢
    • 2021-06-14
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2015-09-22
    • 2017-10-23
    • 1970-01-01
    相关资源
    最近更新 更多