字节对齐问题由来

移植同事代码时候发现一个赋值变量的地方就会出现死机,进入hardfault,怎么也找不不到原因最后没办法去了github https://github.com/armink/CmBacktrace/blob/master/README_ZH.md
CmBacktrace移植成功后发现问题依旧指向如下函数,此函数只是一个赋值给uint16_t 赋值而已,一开始没有特别注意,红箭头处的dat是uint8_t 类型,u8地址连续2段,强转为u16类型
在这里插入图片描述
代码本意是将dat[1]和dat[2]的数据通过地址方式强转为u16的数据
dat[1]和dat[3]的地址我们看下如下发现根本对不齐地址,因此强转一定会出现问题
在这里插入图片描述
所以还是乖乖的通过原子”的u8 来才操作是最安全的办法
chart.js/

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注