記憶體對齊,關於 align(n)的解析

2021-09-24 11:46:36 字數 657 閱讀 9546

__align

__align 關鍵字指示編譯器在 n 位元組邊界上對齊變數。

__align 是乙個儲存類修飾符。它不影響函式的型別。

語法__align(n)

其中:n

是對齊邊界。

對於區域性變數,n 值可為 1、2、4 或 8。

對於全域性變數,n 可以具有最大為 2 的 0x80000000 次冪的任何值。

__align 關鍵字緊靠變數名稱前面放置。

用法如果宣告的變數的常規對齊邊界小於 n,__align(n) 是非常有用的。八字節對齊方式可以顯著提高 vfp 指令的效能。

可以將 __align 與 extern 和 static 一起使用。

限制由於 __align 是儲存類修飾符,因此不能將其用於:

型別,包括 typedef 和結構定義

函式引數。

只能進行過對齊。也就是說,可以將兩個位元組的物件按 4 個位元組對齊,而不能將 4 個位元組的物件按兩個位元組對齊。

示例__align(8) char buffer[128]; // buffer starts on eight-byte boundary

void foo(void)

__align(16) int i; // permitted as a global variable.

關於記憶體對齊

資料傳送到網路板的資料報大小根本不是實際控制數 據包的大小 這時我才想起乙個人,stanley b.lippman,他寫的那 一本書 inside object modale 曾經提過這樣的事 情,編譯器為了提高cpu的效率,會對struct 的結構進行優化,利用sizeof 可以得出不同的計算機上...

關於記憶體對齊

早上看了乙個貼的面試題,struct st int i short s char c sizeof struct st 是多少?int 4,short 2,char 1,但是sizeof st 是8。這個就是記憶體對齊 再來看個例子 struct strt1 strt1 s1 假設s1.c1位址為0...

關於記憶體對齊

資料傳送到網路板的資料報大小根本不是實際控制資料報的大小 這時我才想起乙個人,stanley b.lippman,他寫的那一本書 inside object modale 曾經提過這樣的事情,編譯器為了提高cpu的效率,會對struct 的結構進行優化,利用sizeof 可以得出不同的計算機上對 s...