【发布时间】:2017-04-30 11:49:05
【问题描述】:
有两种类型:
第一个是存储在堆栈中的值类型,第二个是存储在堆中的引用类型。
现在如果我们有一个静态变量,假设:
static int a= 10;
static string str = "Question";
内存分配是如何完成的?
如果我们有一个结构体:
Struct struct
{
int i;
static string name;
float f;
};
如何为这个结构分配内存?
【问题讨论】:
-
AFAIK 变量是静态的这一事实不应改变它在内存中的存储方式,因此整数将存储在堆栈中,而字符串则存储在堆中。
-
... 存储在堆栈中的值类型对于初学者来说是不正确的。
-
如果这不是重复的,请告诉我,其中一位 c# 语言设计师在这里解释了这一切:stackoverflow.com/q/40564712/495455
-
静态变量通常存储在 loader heap 中,这是一个与 AppDomain 关联的内部 CLR 堆。抖动从中分配,当 AppDomain 被卸载时它们会死掉。很多讨厌的小细节,比如 [ThreadStatic] 和泛型类型的静态成员变量。它的设计让您永远不必担心它。
-
附带说明,提问时请多加小心。例如,无需发送垃圾邮件问号。如果您表明您已将一些您的时间和精力用于您的问题,那么您的问题将更有机会得到捐赠他们的时间和精力的人的回答。
标签: c# memory-management struct