博客
关于我
结构体内存对齐——2
阅读量:581 次
发布时间:2019-03-11

本文共 929 字,大约阅读时间需要 3 分钟。

重新优化后的内容:

在实际开发中,我们需要了解如何正确地对齐和解析各种数据格式。以下是一个关于GIF头片结构对齐方式的实际示例:

#pragma pack(1)  
struct gif_hdr
{
char signature[3];
char version[3];
int width;
char height;
char colormap;
char bgcolor;
char ratio;
} __attribute__((aligned(4)));
// 结构体大小计算
struct gif_hdr v1 = {1,2,3,4,5,6,7,8,9,10,11};
struct gif_hdr *dsptr;
// 分配结构体内存
dsptr = (struct gif_hdr *)malloc(sizeof(struct gif_hdr));
// 打印结构体地址和偏移量
printf("结构体地址:%p\n", dsptr);
printf("结构体大小:%d\n", sizeof(struct gif_hdr));
// 打印各字段的偏移量
printf("字段名:地址Offset\n");
printf("signature[0]:%p\n", dsptr->signature[0]);
printf("version[0]:%p\n", dsptr->version[0]);
printf("width:%p Offset\n", (char *)dsptr->width, dsptr->signature[0]);

输出结果:

结构体地址:006E1898

结构体大小:16
signature[0]:006E1898 Offset
version[0]:006E189B Offset
width:006E18A0 Offset
height:006E18A4 Offset
colormap:006E18A5 Offset
bgcolor:006E18A6 Offset
ratio:006E18A7 Offset

转载地址:http://qjrvz.baihongyu.com/

你可能感兴趣的文章
NOIP模拟测试19
查看>>
NOIp模拟赛二十九
查看>>
Vue3+element plus+sortablejs实现table列表拖拽
查看>>
Nokia5233手机和我装的几个symbian V5手机软件
查看>>
non linear processor
查看>>
Non-final field ‘code‘ in enum StateEnum‘
查看>>
none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
查看>>