名稱空間
變體
操作

memalignment

來自 cppreference.com
< c‎ | program
在標頭檔案 <stdlib.h> 中定義
size_t memalignment( const void *p );
(自 C23 起)

返回給定地址所滿足的最大對齊值。返回值可能大於實現所支援的任何對齊值。如果 p 是空指標值,則返回 0,表示該指標不能用於訪問任何型別的物件。

如果返回值為大於或等於 alignof(T),則指標滿足型別 T 的對齊要求。

獨立實現需要提供 memalignment

目錄

[編輯] 引數

p - 要查詢對齊的指標

[編輯] 返回值

p 的對齊值,如果 p 是空指標值,則返回 0

[編輯] 注意

在以下常見平臺中:

  • 空指標被強制轉換為整數 0
  • 指標值直接強制轉換為虛擬地址的數值,並且
  • size_tuintptr_t 相同,

此函式可以實現為 return (size_t)p & -(size_t)p;

[編輯] 示例

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    alignas(128) int i = 0;
    printf("%zu\n%zu\n", memalignment(nullptr), memalignment(&i));
}

可能的輸出

0
128

[編輯] 參考資料

  • C23 標準 (ISO/IEC 9899:2024)
  • 7.24.9.1 memalignment 函式 (p: 374)

[編輯] 另請參閱

分配對齊記憶體
(函式) [編輯]
釋放之前分配的指定大小且對齊的記憶體
(函式) [編輯]