sizeof 数据对齐问题
来源:互联网 发布:手机淘宝国际版 编辑:程序博客网 时间:2024/06/08 08:55
{
char t:4;
char q:4; //1
// unsigned int i:8;
// unsigned int j:8;
// unsigned int a:8;
// unsigned int b:8;
// unsigned int c:8;
// char k:4;
// unsigned int m;
// double n;
};
sizeof(A)=1; 两个4位 char数据组成一个字节
(2)struct A
{
char t:4;
char q:4; //1
unsigned short r:8; //2 对齐组合成4
unsigned int i:8;//4
// unsigned int j:8;
// unsigned int a:8;
// unsigned int b:8;
// unsigned int c:8;
// char k:4;
// unsigned int m;
// double n;
};
sizeof(A)=8; 两个4位 char数据组成一个字节与整型对齐为8个字节
(3)struct A
{
char t:4;
char q:4; //1 对齐成4
unsigned int i:8;//4
// unsigned int j:8;
// unsigned int a:8;
// unsigned int b:8;
// unsigned int c:8;
// char k:4;
// unsigned int m;
// double n;
};
sizeof(A)=8; 两个4位 char数据组成一个字节与整型对齐为8个字节
(4)struct A
{
char t:4;
char q:4; //1 对齐组合成4
unsigned int i:8;
unsigned int j:8;
unsigned int a:8;
unsigned int b:8; //4 这四句话组合成4
// unsigned int c:8;
// char k:4;
// unsigned int m;
// double n;
};
sizeof(A)=8; 两个4位 char数据组成一个字节与整型对齐,4个8位的整型数据组成4个字节,一共有8个字节
5)struct A
{
char t:4;
char q:4; //1 对齐组合成4
unsigned int i:8;
unsigned int j:8;
unsigned int a:8;
unsigned int b:8; //4 对齐组合成4
unsigned int c:8; //4 对齐组合成4
char k:4; //1 对齐组合成4
// unsigned int m;
// double n;
};
sizeof(A)=12;
(6)struct A
{
char t:4;
char q:4; //1 对齐组合成4
unsigned int i:8;
unsigned int j:8;
unsigned int a:8;
unsigned int b:8;//4 对齐组合成4
unsigned int c:8;//4 对齐组合成4
char k:4; //1 对齐组合成4
// unsigned int m;
// double n;
};sizeof(A)=16;
(7)struct A
{
char t:4;
char q:4; //1 对齐组合成4
unsigned int i:8;
unsigned int j:8;
unsigned int a:8;
unsigned int b:8;//4 对齐组合成4
unsigned int c:8;//4 对齐组合成4
char k:4; //4 对齐组合成4
unsigned int m; //4 对齐组合成4
// double n;
};sizeof(A)=20;
(8)struct A
{
char t:4;
char q:4; //1
unsigned int i:8;
unsigned int j:8;
unsigned int a:8;
unsigned int b:8;//4 // 对齐组合成8
unsigned int c:8;//4
char k:4; //4 // 对齐组合成8
unsigned int m;//4 // 对齐组合成8
double n; //8
};sizeof(A)=32; 与8位double型数据对齐
总结:(1)当最高位为char型数据时,组合成char型数据,此时sizeof为1的整数倍。
(2)当最高位为short型数据时,组合成short型数据,可以把其中的不够16位的同一种数据组合起来成16位,不同数据不能组合在一起,此时sizeof为2的整数倍。
(3)当出现数据位最高为整型数据,也即32位数据,可以把其中的不够32位的同一种数据组合起来成32位,不同数据不能组合在一起,sizeof为4的整数倍
(4)当出现数据位最高为double数据,也即64位数据,可以把其中的不够32位的同一种数据组合起来成32位,同时可以把不同种数据组合成64位,ziseof为8的整数倍
(5)有符号和无符号数按同一种类型对待,long Int与int按同一种类型对待
(6)首先关注最高位,把相邻的数据组合成最高位。
- sizeof数据对齐问题
- sizeof 数据对齐问题
- 数据对齐与sizeof()
- 数据对齐与sizeof
- 内存中的数据对齐与sizeof函数
- 结构体数据对齐,sizeof详解
- struct union数据对齐和sizeof大小
- C/C++的sizeof()以及数据对齐
- sizeof用法与编译器对齐的问题.
- sizeof用法与编译器对齐的问题
- ARM内存边界对齐以及sizeof问题
- 字节对齐、sizeof的问题分析
- sizeof(struct)--关于字节对齐的问题
- 字节对齐、sizeof的问题分析
- 结构体的sizeof字节对齐问题
- sizeof运算符的内存对齐问题
- ARM内存边界对齐以及sizeof问题
- sizeof()等等的内存对齐问题
- 数据库常用相关(一)
- 乐乐音乐播放器(四) 日志文件
- Unix时间戳转换成Date
- DOS命令本地jar包添加到Maven本地仓库
- RTMP中FLV流到标准h264、aac的转换b
- sizeof 数据对齐问题
- 勃利在逃犯罪人员信息记录查询
- PC与PCIE之间的通信
- 如何使用TraceView
- 华为OJ测试--名字的漂亮度
- 开发问题日记
- 乐乐音乐播放器(五) 全局异常捕捉
- Xpath
- 浅谈京东云推送----节省 稳定 精准