memcpy的接口语义应该是as is,传入的src、dst是对齐的也好,不是对齐的也好,都会去尝试访问。
然后有的arch要求对齐(byte没有,short、int、long之类的才有),没对齐可能就会出异常,
比如SPARC的natural boundary align:
https://docs.oracle.com/cd/E19253-01/816-4854/hwovr-2/index.html
有的是映射的设备内存,也有对齐要求,没对齐也会出异常
memcpy如果内部实现是最原始的那种逐字节复制,就不会有没对齐导致的异常。
如果实现为“对齐的部分用高速实现(用short、int、long甚至simd来复制,写这个实现的人肯定会考虑对齐问题),没对齐的用字节复制”,也不会有没对齐导致的异常。
【 在 poggy 的大作中提到: 】
:
: 我的理解, 这个问题是架构相关的,
: 有些架构是强制要求对齐的, 可能编译会做这份工作,否则,要发生错误。
: ...................
--
修改:z16166 FROM 123.118.191.*
FROM 123.118.191.*