zoukankan      html  css  js  c++  java
  • 结构体内包含位段,其数据内存分布

    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
  • 相关阅读:
    ASP.net AJAX Toolkit —— DynamicPopulateExtender
    查找存储过程修改时间
    Application_Start和Application_End事件执行时间
    制作导航菜单
    multiple backgrounds
    background-size
    background-clip
    background-origin
    文本阴影text-shadow
    嵌入字体@font-face
  • 原文地址:https://www.cnblogs.com/ashooter/p/4474399.html
Copyright © 2011-2022 走看看