zoukankan      html  css  js  c++  java
  • 结构体对齐

    一:结构体数据成员对齐的意义:

    实际的计算机系统对基本类型数据在内存中的位置有限制,要求这些数据的起始地址是某个数K的整数倍,这就是所谓的内存对齐,这个K称为该数据类型的对齐模数

    这种要求可以简化处理器与内存之间传输系统的设计,还可以提升读取的速度

    二:结构体对齐两方面含义

    结构体总长度

    结构体内各数据成员的内存对齐

    三:结构体大小的计算方法过和步骤

    1):将结构体内所有数据成员的长度相加

    2):各数据成员为了内存对齐而填充的字节数加到总长度中

    3):结构体对齐,结构体的总长度也应该是某个模数的整数倍,这个模数是  min(结构体中最长数据的长度,pragma pack)

    4):在windows和linux系统中,模数的长度不同

    例子:

    #ragma pack(8)

    strucy

    {

    char a;

    long double b;

    int c;

    }

    WINDOWS下

    1+4+8 = 13

    13+7 = 20

    20+4 = 24

  • 相关阅读:
    Python进阶-数据库操作
    Python进阶-数据库(MySQL)介绍与基本操作
    Python进阶-网络编程之TCP粘包
    表与表之间的关系
    基本数据类型
    mysql
    io模型
    GIL,线程池与进程池
    线程
    并发编程,进程
  • 原文地址:https://www.cnblogs.com/buptlyn/p/3662188.html
Copyright © 2011-2022 走看看