结构体大小的计算
来源:互联网 发布:网页游戏编程入门 编辑:程序博客网 时间:2024/05/18 03:21
结构体大小的计算需要遵循两个原则:1、结构体成员变量的偏移量必须是此变量大小的整数倍;2、整个结构体的大小必须是所有最大成员变量的整数倍
如:
struct A{
int I;
short S;
float F;
};
sizeof(struct A) = 12。
计算过程:I 的偏移量是0,0是4的整数倍,S的偏移量是4,4是1的整数倍;F的偏移量是5,5不是4的偏移量,因此要在S后面填充3个字节;最后整个A大小是12,12是4(最大的变量大小),因此12 是结构体所占大小。
又如:
struct B{
int I;
short S1;
float F;
short S2;
};
sizeof(struct B) = 16。
计算过程:I 的偏移量是0,0是4的整数倍,S1的偏移量是4,4是1的整数倍;F的偏移量是5,5不是4的偏移量,因此要在S后面填充3个字节;S2的偏移量是12,12 是1的整数倍,整个A大小是13,13不是4(最大的变量大小),因此要在S2后面加上3个字节组成16。
再如:struct C{
int I;
struct A a;
float F;
short S2;
};
sizeof(struct C) = 24。
计算过程:这里的计算过程跟上述两个例子差不多,只是这里有个struct A 的成员变量,因此在考虑第一个条件时有所不同。这里的偏移量不必是整个A 的整数倍,而是A 里最大的变量的大小(这里是4)。
最后如:
struct D{
int I;
struct C c;
float F;
short S2;
};
sizeof(struct D) = 36。
这里在考虑第一个规则时,c的偏移量必须是A中最大的成员大小的整数倍。
0 0
- 计算结构体的大小
- 结构体大小的计算
- 计算结构体的大小
- 计算结构体的大小
- 计算结构体的大小
- 计算结构体的大小
- 计算结构体的大小
- 结构体大小的计算
- 计算结构体的大小
- 结构体大小的计算
- 计算结构体的大小
- 结构体大小的计算
- 结构体大小的计算
- 结构体大小的计算
- 计算结构体的大小
- 计算结构体的大小
- 计算结构体的大小
- 结构体大小的计算
- Robot Framework经验谈 - 一个关键字在页面上导航(多次点击跳转)
- 【Android】关于PhotoView频繁缩小异常退出的BUG
- Java之构造器<constructor>
- PCI OP WiFi 测试(一):基本概念
- 关于com.android.support:design:23.2.0中的坑
- 结构体大小的计算
- Discuz 如何开启 memcache
- 浙江省第四届“知识产权杯”创意设计大赛
- PAT (Basic Level)1041. 考试座位号
- SYDZ 辗转相除法的原理与实现
- 推酷
- Android的animation动画
- 利用UncaughtExceptionHandler捕获全局异常
- android 获取当前fragment单个对象(解决fragment返回键问题)