结构体sizeof不想字节对齐

来源:互联网 发布:x mirage mac 激活码 编辑:程序博客网 时间:2024/04/29 18:07

问题描述:笔者在做一个项目:硬件要访问内存中按照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。

原创粉丝点击