应该是12级提到的班级?

时间:2017-05-23 11:19:03

标签: c++ memory-management operating-system

请分享您对此的看法:

 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,为什么?

1 个答案:

答案 0 :(得分:1)

  

应该是12级提到的课程吗? [原文如此]

结构的大小取决于许多平台相关的东西。例如,它取决于(YellowGridLabel的大小。在某些系统上它可能是1,而在另一个系统上它可能更多。这还取决于是否有一个字段"跨越"多个底层对象与否。在某些系统上它确实存在,而在其他系统上则没有。

unsigned的大小为int,因此该类的大小至少为2.

_dummy_drc和位域不跨越多个对象并且字段从左到右分配2 * sizeof(int)的系统上,预期的大小(匿名结构,因此是union,因此)包含上课将是8:

sizeof(int) == 4

PS。联合在C ++中是不正确的,因为它包含一个匿名成员类。