当前位置: 技术问答>linux和unix
嵌入式linux内存对齐问题
来源: 互联网 发布时间:2017-05-08
本文导语: 我在函数里定义了一个数组unsigned char buf[100],当我赋值的时候发现 *(unsigned int *)(buf + 5) = x;时发现如果开始地址不是4的整数倍都会自动对齐;请问如何可以任意赋值?修改编译器还是怎么?我用的arm-linux-gcc如...
我在函数里定义了一个数组unsigned char buf[100],当我赋值的时候发现
*(unsigned int *)(buf + 5) = x;时发现如果开始地址不是4的整数倍都会自动对齐;请问如何可以任意赋值?修改编译器还是怎么?我用的arm-linux-gcc如何修改?
*(unsigned int *)(buf + 5) = x;时发现如果开始地址不是4的整数倍都会自动对齐;请问如何可以任意赋值?修改编译器还是怎么?我用的arm-linux-gcc如何修改?
|
不支持非对齐访问的处理器,只能通过截获和处理访问异常来达到目的,性能惨淡。
用package修饰数据结构,编译器可以处理,那是另外一个问题。
用package修饰数据结构,编译器可以处理,那是另外一个问题。