问题描述:笔者在做一个项目:硬件要访问内存中按照Spec格式定义的一段数据包。在C语言中一般使用结构体初始化这个数据包,因为可以方便配置各个字段。但结构体默认需要字节对齐的(sizeof和实际大小不同),因此和内存真实的存放方式可能不同。
解决方法:让结构体按1字节对齐,例如:
struct test{
char ch;
int size;
char str[10];
}__attribute__ ((aligned (1)));
或者其等价形式:
struct test{
char ch;
int size;
char str[10];
}__attribute__ ((packed));
struct test mytest;
这样sizeof(mytest)=15。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)