2013-03-14 41 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的倍數。

這對於許多較舊的系統來說非常重要,因爲地址需要在「字」邊界上對齊,通常是四個字節或兩個字節的倍數。如果沒有正確對齊,程序會因'對齊錯誤'而崩潰。

更新的機器通過從任何地址加載來解決此問題,但通常這意味着加載數據需要幾個週期。

相關問題