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
  • 相关阅读:
    自定义函数
    取小数的有效值函数
    数据恢复bak
    脚本启动windows服务
    创建表
    PostgreSQL和SQL SERVER的数据库差异
    vs2019莫名自动退出调试状态
    postgresql 设置调试
    Google Web字体,让你的网页更迷人
    翻译:观察者模式—使用JavaScript实现
  • 原文地址:https://www.cnblogs.com/ashooter/p/4474399.html
Copyright © 2011-2022 走看看