__unaligned
當您宣告使用變數的指標__unaligned修飾詞,編譯器會假設指標位址未對齊的資料。 因此,目標 Itanium 處理器系列 (IPF) 電腦的應用程式,則編譯器會產生一次讀取一個未對齊的資料位元組的程式碼。
備註
__unaligned修飾詞是有效的x64和Itanium編譯器,但 IPF 電腦為目標的影響只有應用程式。 這個修飾詞告訴您,只有 ; 附上地址資料的對齊方式 指標本身會假設設為靠右對齊。
Itanium處理器 」 產生對齊錯誤時存取未對齊的資料和時間來處理錯誤減弱時的效能。使用__unaligned修飾詞讓處理器以一次讀取資料的位元組,並避免錯誤。 這個修飾詞並不需要x64應用程式因為x64處理器處理未對齊的資料,而不需判定為失敗。
如需對齊的詳細資訊,請參閱:
範例
// unaligned_keyword.cpp
// compile with: /c
// processor: x64 IPF
#include <stdio.h>
int main() {
char buf[100];
int __unaligned *p1 = (int*)(&buf[37]);
int *p2 = (int *)p1;
*p1 = 0; // ok
__try {
*p2 = 0; // throws an exception
}
__except(1) {
puts("exception");
}
}