当前位置:   article > 正文

字节对齐_若按4字节对齐sizeof(ctest)的值是多少什么意思

若按4字节对齐sizeof(ctest)的值是多少什么意思

若char是1字节,int是4字节,指针类型是4字节,代码如下:

  1. class CTest
  2. {
  3. public:
  4. CTest():m_chData(‘\0’),m_nData(0)
  5. {
  6. }
  7. virtual void mem_fun(){}
  8. private:
  9. char m_chData;
  10. int m_nData;
  11. static char s_chData;
  12. };
  13. char CTest::s_chData=’\0’;

问:
(1)若按4字节对齐sizeof(CTest)的值是多少?
(2)若按1字节对齐sizeof(CTest)的值是多少?

解题思路:

1、先找有没有virtual函数,有的话就要建立虚函数表+4
2、static的成员变量属于类域,不算入对象中+0
3、神马成员都没有的类,或者只有成员函数+1
一旦类中有其他的占用空间成员,则这1个字节就不在计算之内,如一个类只有一个int则占用4字节而不是5字节)


答案:

(1)结果是12= 4(虚表指针)+1(char )+3(对齐补位)+4(int)

(2)结果是9 =4(虚表指针)+1(char )+4(int

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/714926
推荐阅读
相关标签
  

闽ICP备14008679号