c语言强制4字节对齐,C语言__attribute__((__packed__))关键字自。。。

更新时间:2023-08-03 11:55:05 阅读: 评论:0

c语⾔强制4字节对齐,C语⾔
__attribute__((__packed__))关键字⾃。。。
⾃动字节对齐
不想要字节对齐的时候,有没有办法取消字节对齐?答案是可以,就是在结构体声明当中,加上__attribute__ ((__packed__))关键字,它可以做到让我们的结构体,按照紧凑排列的⽅式,占⽤内存。来段实际代码:
冒险经历#include #include
礼官
using namespacestd;structtest1 {charc;inti;
};struct__attribute__ ((__packed__)) test2 {charc;inti;
群雄逐鹿
};intmain()
{
cout<< "size of test1:" << sizeof(struct test1) <
cout<< "size of test2:" << sizeof(struct test2) <
一支神笔}
运⾏结果:
size of test1:8size of test2:5
兰蔻粉水成分显⽽易见,test1结构体⾥⾯没有加关键字,它采⽤了4字节对齐的⽅式,即使是⼀个char变量,也占⽤了4字节内存,int占⽤4字节,共占⽤了8字节内存,这在64位机器当中将会更⼤。
⽽test2结构体,再加上关键字之后,结构体内的变量采⽤内存紧凑的⽅式排列,char类型占⽤1字节,int占⽤4字节,总共占⽤了5个字节的内存。
钢琴的基本知识数据结构的对齐的问题。为了让我们的数据结构以最优的⽅式存储,处理,保证读写数据结构都⼀⼀对齐,我们往往采⽤3种⽅式:
1.⼿动对齐,将数据按从⼩到⼤的顺序排列,尽量凑齐。
1556年
2.使⽤#pragma pack (n)来指定数据结构的对齐值。
邵康节
3.使⽤ __attribute__ ((packed)) ,让编译器取消结构在编译过程中的优化对齐,按照实际占⽤字节数进⾏对齐,这样⼦两边都需要使⽤
__attribute__ ((packed))取消优化对齐,就不会出现对齐的错位现象。

本文发布于:2023-08-03 11:55:05,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1106528.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字节   结构   数据结构   取消
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图