博客
关于我
结构体内存对齐——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/

你可能感兴趣的文章
openfeign远程调用不起作用解决_使用Spring Boot的spring.factories进行注入---SpringCloud Alibaba_若依微服务框架改造---工作笔记007
查看>>
openfire开发(四)消息拦截器
查看>>
openfire源码解读之将cache和session对象移入redis以提升性能
查看>>
Openfire身份认证绕过漏洞复现+利用(CVE-2023-32315)
查看>>
OpenForest 开源项目安装与使用指南
查看>>
OpenGL glBlendFunc() 设置颜色混合 透明度叠加计算
查看>>
OpenGL 中“立即模式”是什么意思?
查看>>
opengl 教程(15) 摄像机控制(2)
查看>>
opengl 深度详解,多重采样时,如何在OpenGL纹理中解析深度值?
查看>>
OpenGL 的内置矩阵种种
查看>>
OpenGL/OpenGL ES 入门:基础变换 - 初识向量/矩阵
查看>>
OpenGL中shader读取实现
查看>>
OpenGL中旋转平移缩放等变换的顺序对模型的影响
查看>>
Opengl中的gluProject函数认识
查看>>
OpenGl介绍
查看>>
OPENGL半透明图像产生黑色光环
查看>>
OpenGL和图形卡
查看>>
OpenGL字体绘制
查看>>
OpenGL学习
查看>>
openGL学习步骤
查看>>