码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-03 18:59:24      阅读:129      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!