设为首页 加入收藏

TOP

C语言 内存中结构体字节对齐(二)
2014-11-24 00:33:00 来源: 作者: 【 】 浏览:47
Tags:语言 内存 结构 字节
目的,当然即使不加这个成员通常编译器也会给我们自动填补对齐,我们自己加上它只是起到显示的提醒作用。
四、字节对齐可能带来的隐患
  代码中关于对齐的隐患,很多是隐式的。比如在强制类型转换的时候。例如:
  unsigned int i = 0x12345678;
  unsigned char *p = NULL;
  unsigned short *p1 = NULL;
  p=&i;
  *p=0x00;
  p1=(unsigned short*)(p+1);
  *p1=0x0000;
  最后两行代码,从奇数边界去访问unsigned short型变量,显然不符合对齐的规定。在X86上,类似的操作只会影响效率,但是在MIPS或者sparc上,可能就是一个error,因为它们要求字节必须对齐。
五、如何查找与字节对齐方面的问题
  如果出现对齐或者赋值问题首先查看
  1.编译器设置的对齐值
  2.看这种体系本身是否支持非对齐访问
  3.如果支持看设置了对齐与否,如果没有则看访问时需要加某些特殊的修饰来标志其特殊访问操作。

摘自 专注于嵌入式

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇【linux+C】新征程 linux下C编程 下一篇C语言memcpy 断错误

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: