是否应该是提到的类的 12 大小?
Is should be 12 size of mentioned class?
请分享您对此的看法:
class A
{
union {
unsigned int _dummy_drc[2];
struct {
unsigned int _trans_drc :1;
unsigned int _cap_drc :1;
unsigned int _fanout_drc :1;
unsigned int _trans_drc_index :10;
unsigned int _cap_drc_index :10;
unsigned int _fanout_drc_index :10;
};
};
};
应该是12吗,为什么?
应该是提到的类的 12 大小吗?[原文如此]
结构的大小取决于许多依赖于平台的东西。例如,它取决于(unsigned
)int
的大小。在某些系统上,它可能是 1,而在另一个系统上它可能更多。它还取决于位字段是否"跨越"多个基础对象。在某些系统上可以,而在另一些系统上则不会。
_dummy_drc
的大小是2 * sizeof(int)
,所以类的大小至少是2。
在sizeof(int) == 4
和位字段不跨越多个对象并且字段从左到右分配的系统上,CHAR_BIT == 8
,包含类的预期大小(匿名结构,因此是联合,因此)是 8:
|1 |2 |3 |4 |5 |p |6 |p field position, p stands for padding
|1 |1 |1 |10|10|8 |10|22 field bits
|1 |2 |3 |13|23|32|10|32 cumulative bits since start of object
|1 |2 underlying integer position
附言。联合在C++中格式不正确,因为它包含一个匿名成员类。
相关文章:
- 包含换行符分隔的单词的文件和C++中这些单词的字符串向量的大小是否相同?
- 向量的大小是否有可能为 1 但其中的元素数量为零?
- 调整STD ::向量的大小是否可以降低其能力
- “调整大小”是否有降低矢量容量的风险
- 字大小是否限制内存地址的数量,而不是内存本身?
- 64位计算机上的VPTR的大小是否为64位
- 在C++中,枚举的大小是否必须等于其基础类型的大小
- 编译时检查大小是否为..(args) 匹配来自 constexpr 函数的结果
- C++中无序集的大小是否有限制
- 调整外部向量的大小是否会复制内部向量
- 使用 #define 来定义静态数组的大小是否合法?
- 数组大小是否需要恒定
- 从另一个线程调用 std 容器上的大小是否安全
- size_t的大小是否总是等于空隙*的大小
- 如何检查数组是否已满以及其大小是否为数组的两倍/一半
- 可以在 CUDA 中使用的数组大小是否有限制
- 将 size() 调整为较小的大小是否会丢弃早期 reserve() 所做的保留
- 分配大小是否会影响其速度
- 预先设置矢量的大小是否更有效
- 传递给 A::运算符 new() 的大小是否总是等于 sizeof(A)