首页 > 其他 > 详细

结构体内包含位段,其数据内存分布

时间:2015-05-03 18:58:04      阅读:267      评论:0      收藏:0      [点我收藏+]
struct  _PACKER_DATA
{
         unsigned char  IsDLL     :1;              // 是否为DLL
         unsigned char  Config    :3;              // 设置
         unsigned char  OldOEP   :4;             // 程序入口点
         int           nSize                   ;              // 位段和非位段数据可并存        
};  
结构体展开:
?1<------1bit------>|<------3bit------->|<------4bit------>|<-------32bit-------->|
       IsDLL                       Config                    OldOEP                     nSize
 
 
g_stcPackData.IsDLL    = 1;                     // 1
g_stcPackData.Config   = 5;                     // 101(如果超过3位,只取低3位)
g_stcPackData.OldOEP = 9;                     // 1001
g_stcPackData.nSize    = 0xFFFFFFFF
 
g_stcPackData结构体变量在内存中数据排列为:
9B    00    00    00    FF    FF    FF    FF      // 按照VS默认8字节对齐的
  |--->  1001 1011(从右向左排列位数据)
    OldOEP+Config+IsDLL

结构体内包含位段,其数据内存分布

原文:http://www.cnblogs.com/ashooter/p/4474399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!