如何为静态变量分配内存?

时间:2008-12-03 13:01:56

标签: c# .net memory-management

在以下程序中:

class Main
{   
    static string staticVariable = "Static Variable";
    string instanceVariable = "Instance Variable";

    public Main(){}   
}

instanceVariable将存储在为对象实例分配的内存中。 staticVariable将存储在哪里,它是存储在对象实例本身还是其他地方?如果它存储在其他地方,那么内存位置是如何连接的?

2 个答案:

答案 0 :(得分:12)

静态变量的内存通常保存在某些有根(和隐藏)object[]中。可以看到在WinDbg(带有SOS)的对象上执行!gcroot。

只是添加,这些引用永远不会被GC(除非你将字段置空),正如我最近发现的那样。

答案 1 :(得分:-1)

例如,在C ++中,静态变量在具有全局变量的全局内存空间中分配。编译器使用特殊的命名约定来知道该变量属于该类。