静态成员存储在内存中的啥位置? C#.Net中的堆栈/堆[重复]
Posted
技术标签:
【中文标题】静态成员存储在内存中的啥位置? C#.Net中的堆栈/堆[重复]【英文标题】: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 因为这是我的面试问题之一! :) 【参考方案1】:分配静态变量时,它将作为 Methodtable 的一部分存储。 方法表意味着当一个类在应用程序中第一次加载时,将在appdomain中为类级变量和类内的方法分配单独的内存。 .
如果静态变量是原始类型,它将作为 Methodtable 的一部分存储。如果是引用类型,则存放在堆内,引用存放在Methodtable中
【讨论】:
以上是关于静态成员存储在内存中的啥位置? C#.Net中的堆栈/堆[重复]的主要内容,如果未能解决你的问题,请参考以下文章