2013-03-14 39 views

回答

8

这意味着尖地址模8是0:

pointer % 8 == 0 

这可以是低级别的操作,其中它可以影响正确性或效率是重要的。另见this answer

+2

一会,以保证CPU能够有效地读取存储器地址关心字节对齐。不对齐的内存块导致总线错误。请参阅此处的未对齐访问部分 - > http://en.wikipedia.org/wiki/Segmentation_fault#Bus_error – 2013-03-14 23:50:24

6

这意味着内存上的地址是8

至于为什么你甚至会在乎多开始:对于不是对齐的内存中,CPU有时需要两次访问阅读全部内容。在某些情况下,它甚至不会尝试并只会引发错误。提到“与8字节对齐”是为了让调用者知道它是否需要做任何指针的欺骗操作。

(通常情况下,你不会在乎 - 编译器负责大部分的对齐问题为您但是信息的存在,如果你需要它的一些原因。)

1

内存对齐描述模的地址。所以8字节对齐意味着他的地址是8的倍数。

这对于许多较旧的系统来说非常重要,因为地址需要在“字”边界上对齐,通常是四个字节或两个字节的倍数。如果没有正确对齐,程序会因'对齐错误'而崩溃。

更新的机器通过从任何地址加载来解决此问题,但通常这意味着加载数据需要几个周期。

相关问题