【问题标题】:c++ static non-staticC++ 静态非静态
【发布时间】:2011-03-14 05:42:08
【问题描述】:

在 C++ 中 静态或非静态变量在哪里?我的意思是在内存中。

还有,什么时候初始化静态或非静态变量?

需要有人帮我弄清楚我的想法。 谢谢!

那么 C 呢?一样吗?

【问题讨论】:

标签: c++ c static non-static


【解决方案1】:

它们可以放在编译器(或链接器或加载器)想要将它们放入内存的任何位置,C 和 C++ 标准不要求这种详细程度。他们只要求行为。

通常,静态成员会在程序启动时(包括在编译时,以便它们在已初始化的状态下简单地加载)或在第一次使用之前初始化一次。

【讨论】:

  • 措辞非常好(且谨慎)。
【解决方案2】:

非静态成员的驻留位置取决于对象的实例化方式。

class foo
{
    int num ; // Non-Static member 
    // ....
};

foo obj ; // In this case `num` resides on stack. In fact, obj it self resides on stack
foo *temp = new foo;  // In this case `num` resides on heap or in memory location acquired from the free store.

我不确定静态成员。

【讨论】:

    【解决方案3】:

    静态变量与全局变量位于同一位置,这往往由编译器确定,并在程序加载时创建并持续到程序结束

    非静态变量放在哪里——无论你把它们放在哪里(在堆栈或堆上)

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      相关资源
      最近更新 更多