以態(tài)度決定一切作文
字,雙字,和四字在自然邊界上不需要在內存中對齊。(對字,雙字,和四字來(lái)說(shuō),自然邊界分別是偶數地址,可以被4 整除的地址,和可以被8 整除的地址。)

無(wú)論如何,為了提高程序的性能,數據結構(尤其是棧)應該盡可能地在自然邊界上對齊。原因在于,為了訪(fǎng)問(wèn)未對齊的內存,處理器需要作兩次內存訪(fǎng)問(wèn);然而,對齊的內存訪(fǎng)問(wèn)僅需要一次訪(fǎng)問(wèn)。
一個(gè)字或雙字操作數跨越了4 字節邊界,或者一個(gè)四字操作數跨越了8 字節邊界,被認為是未對齊的,從而需要兩次總線(xiàn)周期來(lái)訪(fǎng)問(wèn)內存。
一個(gè)字起始地址是奇數但卻沒(méi)有跨越字邊界被認為是對齊的,能夠在一個(gè)總線(xiàn)周期中被訪(fǎng)問(wèn)。某些操作雙四字的指令需要內存操作數在自然邊界上對齊。如果操作數沒(méi)有對齊,這些指令將會(huì )產(chǎn)生一個(gè)通用保護異常。
雙四字的自然邊界是能夠被16 整除的地址。其他的操作雙四字的指令允許未對齊的訪(fǎng)問(wèn)(不會(huì )產(chǎn)生通用保護異常),然而,需要額外的內存總線(xiàn)周期來(lái)訪(fǎng)問(wèn)內存中未對齊的數據。
缺省情況下,編譯器默認將結構、棧中的成員數據進(jìn)行內存對齊。因此,上面的程序輸出就變成了:c1 00000000, s 00000002, c2 00000004, i 00000008。
編譯器將未對齊的成員向后移,將每一個(gè)都成員對齊到自然邊界上,從而也導致了整個(gè)結構的尺寸變大。盡管會(huì )犧牲一點(diǎn)空間(成員之間有部分內存空閑),但提高了性能。
也正是這個(gè)原因,我們不可以斷言sizeof(TestStruct1)的結果為8。在這個(gè)例子中,sizeof(TestStruct1)的結果為12。
【以態(tài)度決定一切作文】相關(guān)文章:
態(tài)度,決定一切05-27
態(tài)度決定一切05-29
關(guān)于態(tài)度的作文:態(tài)度決定一切02-20
態(tài)度,決定一切作文04-23
態(tài)度決定一切作文07-05
態(tài)度決定一切作文11-29
態(tài)度決定一切的作文08-24
態(tài)度決定一切作文 態(tài)度決定一切作文記敘文02-25
【實(shí)用】態(tài)度決定一切06-07