关于计算struct结构体占用空间
来源:互联网 发布:法国劳动法改革 知乎 编辑:程序博客网 时间:2024/05/16 05:00
关于如何计算struct所占用空间的大小:
有人可能觉得不就是把结构体内所有变量所占空间加起来不就可以了吗?其实,这句话只对了一半,所有变量所占空间要加起来没错,但是机器为了更加容易的取出struct里面的数据,会将里面的变量所占空间进行对齐。这是以空间换时间的一种方式。
如何进行对齐呢?
首先,是每个变量的偏移量对齐,每一个变量相对于首地址的位置就是偏移量。例如:
struct data { int a;//int型变量的大小4个字节 char b;//char类型变量的大小1字节
double c;//double类型变量的大小8字节
}其中a的偏移量就是0,b的偏移量就是4,c的偏移量就是5,以此类推。要进行对齐的话,该变量的偏移量一定要是该变量大小的整数倍。c的偏移量是5,对齐以后就会变成8,在变量b和c之间会穿插3个字节。这就是每个变量的偏移量对齐了。
其次,结构体的大小一定要是所占字节数最大的变量大小的整数倍,有点绕口,举个例子就知道了:
struct data { int a;//4字节 double b;//8字节 char c;//1字节 int d;//4字节}在上面的例子中,对每个变量进行偏移量对齐以后算出字节大小是20字节,但是机器为了存取方便一定会在后面加4个字节变为24字节。就像下面这个截图:
0 0
- 关于计算struct结构体占用空间
- 【C++】计算struct结构体占用的长度
- C++ 计算struct结构体占用的长度
- 关于结构体占用空间大小总结
- 怎么计算struct结构所占空间?
- 关于结构体中变量空间占用问题思考
- 关于结构体struct的sizeof计算问题
- 结构体的空间占用
- 结构体的空间占用
- 结构体的空间占用
- 结构体空间计算
- 关于结构体struct(1)
- 关于struct结构体对齐
- 结构体占用空间以及对齐原则
- struct的对齐方式及占用空间的计算(转自百度百科)
- struct和union在内存中占用空间大小的计算
- 结构体(struct)中的偏移量计算
- struct结构体占内存大小计算
- phpstorm 9 序列号,且用且珍惜!
- Android 侧滑
- 赛码 A+B problem
- apache https配置
- Remove Element(删除数组某一元素)
- 关于计算struct结构体占用空间
- ios-数据库-事务
- 1.7 什么是软件生命周期模型?试比较瀑布模型,快速原型模型,增量模型和螺旋模型的优缺点,说明每种模型的适用范围
- 数据结构中的概念问题
- 时间格式化
- 编译器自动创建的析构函数
- [网络原理]TCP连接是由客户端主动建立的吗?
- Java 根据 HashMap 的 value 进行排序
- Spring(五):事务的传播行为和隔离级别