我最近开始考虑对齐...这是我们通常不必考虑的问题,但我意识到有些处理器要求对象沿 4 字节边界对齐。这究竟是什么意思,哪些特定系统有对齐要求?
假设我有一个任意指针:
unsigned char* ptr
现在,我正在尝试从内存位置检索 double 值:
double d = **((double*)ptr);
这会导致问题吗?
最佳答案
这肯定会导致某些系统出现问题。
例如,在基于 ARM 的系统上,您无法寻址未与 4 字节边界对齐的 32 位字。这样做会导致访问冲突异常。在 x86 上,您可以访问此类未对齐的数据,但性能会受到一点影响,因为必须从内存中获取两个单词而不是一个。
关于c++ - 沿 4 字节边界对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1237963/