静态成员变量的大小是不算算子的sizeof
,所以我猜是在数据段。我对吗?
问问题
504 次
2 回答
3
猜对了。静态成员本质上是全局变量,但不在全局变量命名空间中。它们的存储在数据段中。
编辑:如果一个实现发现可以将静态成员存储在一些不寻常的存储位置,那没关系。静态成员的语义保持不变,它们的自然存储位置是全局数据。静态成员不是对象实例的一部分,因此它们不计入大小。
我认为这是对这个问题的足够准确的回答,因为没有迹象表明 coinyx 正在要求 C++ 标准的正式注释。
我要补充一点,Trojanfoe 对遗留 x86 系统以及可能的其他系统都是正确的。在这种情况下,初始化的变量通常会进入数据段,而未初始化的数据会进入 bss 段。此外,也可以从 bss 段分配主堆栈。其他线程堆栈将分配到其他地方。静态成员不会被认为是堆栈分配的。
于 2013-09-15T06:13:14.407 回答
2
静态数据,包括静态成员,放置在数据段中。但是为什么你认为sizeof
操作符不计算静态成员变量的大小呢? sizeof
给出变量类型的大小.
于 2013-09-15T06:15:26.833 回答