代码之家  ›  专栏  ›  技术社区  ›  gk.

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

  •  51
  • gk.  · 技术社区  · 17 年前

    在以下程序中:

    class Main
    {   
        static string staticVariable = "Static Variable";
        string instanceVariable = "Instance Variable";
    
        public Main(){}   
    }
    

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

    2 回复  |  直到 10 年前
        1
  •  12
  •   leppie    17 年前

    静态变量的内存通常保存在一些根(和隐藏)中 object[] 。这可以看到做一个!gcroot在Winggy中的对象上(使用SOS)。

    只需补充一点,正如我最近发现的那样,这些引用永远不能被GC删除(除非您将该字段设为null)。

        2
  •  -1
  •   Nick Borodulin    17 年前

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