zoukankan      html  css  js  c++  java
  • struct的成员对齐问题-结构体实际大小问题

    struct的成员对齐
    注意:为了方便说明,等号左边是每个数据单独所占长度,右边是最终空间大小,以字节为单位。
    一、什么时间存在对其问题:(32位机对齐方式是按照4字节对其的,以下所有试验都是在32位机上验证的)
      当结构体成员数据按照其顺序组合,无法按4字节对齐时,存在对其问题。
      如:
        1+1=2;
        1+2=3;
        1+2+1=4(而不是6或者其他);
        2+1=3;(不是4)
        以上是不存在对其问题的(因为没有超过4字节)。
      如:
        1+4=8;
        4+1=8;
        1+4+1=12;
        1+2+4=8;
        1+3+4=8;
        以上就存在对其问题,有超过4字节的数据。
    二、存在对其问题时,应该如何对齐:
      当发生对其问题时,对其原则有两点:
      ①当所有成员数据和<=4时,结构体大小就是数据大小的和。
      ②连续数据类型的数据,如果可以组合成4,则将其组合,以节省空间。
      ③当和>4时,小于4字节的数据类型,其实际大小取min(4,max(所有数据类型大小))。注:所有数据类型大小,实质基本数据类型,不包括数组,结构体,
      如:
        char[5]  5=5;        超过的一个字符,时间大小=min(4,1)=1;
        1+2+4=8;           组合1、2,结果为8,而不是12.
        char + double +char =16;   实际是4+8+4=16;
        
    附录:
    ①在32位机中下边基本数据类型及其长度(byte):
    char:   1
    short:   2
    int:   4 
    long:   4
    long long:8
    pointer: 4
    enum:  4
    double:  8
    float:   4
     
  • 相关阅读:
    PHP通用函数
    Discuz 取各排行榜数据
    htaccess 增加静态文件缓存和压缩
    一个域名解析不同访问方法
    TP5:隐藏inde.php文件
    vscode:解决操作git总让输入用户名及密码问题
    vscode:配置git
    cmd:相关命令和笔记
    PHP:通过MVC,实现第三方登录(百度)
    Linux:301重定向 —— 将不带www的重定向到带www的
  • 原文地址:https://www.cnblogs.com/cz-blog/p/4691756.html
Copyright © 2011-2022 走看看