c++ - 沿 4 字节边界对齐

标签 c++ cpu alignment internals

我最近开始考虑对齐...这是我们通常不必考虑的问题,但我意识到有些处理器要求对象沿 4 字节边界对齐。这究竟是什么意思,哪些特定系统有对齐要求?

假设我有一个任意指针:

unsigned char* ptr

现在,我正在尝试从内存位置检索 double 值:

double d = **((double*)ptr);

这会导致问题吗?

最佳答案

这肯定会导致某些系统出现问题。

例如,在基于 ARM 的系统上,您无法寻址未与 4 字节边界对齐的 32 位字。这样做会导致访问冲突异常。在 x86 上,您可以访问此类未对齐的数据,但性能会受到一点影响,因为必须从内存中获取两个单词而不是一个。

关于c++ - 沿 4 字节边界对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1237963/

相关文章:

c++ - CxxTest 编译,缺少 main

process - 进程之间的上下文切换是否会使 MMU(内存控制单元)失效?

Android RTL布局方向对齐中心问题

NOLINT 的 java checkstyle 等价物

c++ - 需要帮助理解返回引用的函数

linux - 当进行系统调用时,是整个进程阻塞还是仅线程阻塞?

memory - CPU会出错吗?

Android - TextView 中的文本不左对齐/垂直对齐

HTML/CSS 对齐两个输入和下面的文本

c++ - 在结构中使用结构数组时在标量初始值设定项周围加括号