结构体有字节对齐和字节补齐问题
来源:互联网 发布:python 开源运维工具 编辑:程序博客网 时间:2024/05/12 13:27
关于结构体有一个字节对齐和字节补齐的问题
对齐原则是:分配空间要是该类型数据大小的倍数即为有char为1的倍数,有short为2的倍数,
有int为4的倍数,有double为8的倍数(关于int和double一般都是4的倍数)
补齐原则是:整个结构体变量的长度补成这里面最大的那个成员大小的倍数,如果大小超过4
就按4的倍数
所以你这个结构的大小具体要这样算
a是个整形4个字节没啥说的,继续到b是个字符型1个字节4是1的倍数所以不用使用对齐原则此时结构体大小为5,再到c短整型2个字节5不是2的倍数所以要对齐一下直接到6再加上c的大小此时结构体大小为8,再到d字符型1个字节8是1的倍数所以不用对齐直接加上此时结构体大小为9,最后因为9不是a的大小倍数要使用补齐原则不上3为12也就是最终结构体的大小
对齐原则是:分配空间要是该类型数据大小的倍数即为有char为1的倍数,有short为2的倍数,
有int为4的倍数,有double为8的倍数(关于int和double一般都是4的倍数)
补齐原则是:整个结构体变量的长度补成这里面最大的那个成员大小的倍数,如果大小超过4
就按4的倍数
所以你这个结构的大小具体要这样算
1
2
3
4
5
6
7
struct
s1
{
int
a;
//此时是4
char
b;
//此时是5
short
c;
//对齐一下直接冲6开始,此时是8
char
d;
//此时是9,补齐3个字节最后为12
};
a是个整形4个字节没啥说的,继续到b是个字符型1个字节4是1的倍数所以不用使用对齐原则此时结构体大小为5,再到c短整型2个字节5不是2的倍数所以要对齐一下直接到6再加上c的大小此时结构体大小为8,再到d字符型1个字节8是1的倍数所以不用对齐直接加上此时结构体大小为9,最后因为9不是a的大小倍数要使用补齐原则不上3为12也就是最终结构体的大小
- 结构体有字节对齐和字节补齐问题
- 结构体字节对齐问题
- 结构体字节对齐问题
- 结构体字节对齐问题
- 结构体字节对齐问题
- 结构体字节对齐问题
- 结构体字节对齐问题
- 结构体字节对齐问题
- 结构体字节对齐问题
- 结构体字节对齐问题
- 结构体字节对齐问题
- 结构体字节对齐问题
- 内存对齐与补齐 字节对齐与结构体大小
- 字节对齐与补齐
- 字节对齐与补齐
- 结构体和联合体的字节对齐问题
- 结构体字节对齐
- 结构体字节对齐
- poj3038 Flying Right 解题报告 -- 贪心
- 简单演示字节和字符之间的编码转化
- telnet调试SMTP协议
- MySql下载与安装
- 【函 数】
- 结构体有字节对齐和字节补齐问题
- 我对fill_parent的理解
- 矩阵论学习笔记一:线性空间与线性变换
- suse 10 下mysql安装
- UVA 100题解
- Leetcode : Palindrome Number
- Image::FromStream(pStream) 返回0
- [UI]关于Android手机Ui设计
- 利用MS08067远程溢出漏洞抓肉鸡