2008-12-03 38 views
46

在下面的程序:如何为静态变量分配内存?

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

    public Main(){} 
} 

instanceVariable将存储分配给对象实例的存储器内。 staticVariable将存储在哪里,它是否存储在对象实例本身或其他地方?如果将其存储在其他地方,则存储位置如何连接?

回答

10

静态变量的内存通常保存在一些根(和隐藏)object[]。这可以看作是在WinDbg的对象(带SOS)上做一个!gcroot。

就在我刚刚发现的时候,这些引用永远不会被GC'ed(除非你为空)。

0

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