问题描述:笔者在作一个项目:硬件要访问内存中按照Spec格式定义的一段数据包。在C语言中通常使用结构体初始化这个数据包,由于能够方便配置各个字段。但结构体默认须要字节对齐的(sizeof和实际大小不一样),所以和内存真实的存放方式可能不一样。spa
解决方法:让结构体按1字节对齐,例如:内存
struct test{
char ch;
int size;
char str[10];
}__attribute__ ((aligned (1)));test
或者其等价形式:配置
struct test{
char ch;
int size;
char str[10];
}__attribute__ ((packed));
硬件
struct test mytest;方法
这样sizeof(mytest)=15。数据