memalignment
|
ヘッダーで定義
<stdlib.h>
|
||
|
size_t
memalignment
(
const
void
*
p
)
;
|
(C23以降) | |
指定されたアドレスが満たす最大のアライメントを返します。戻り値は実装がサポートする任意のアライメント値よりも大きい場合があります。
p
がヌルポインタ値の場合、
0
が返され、このポインタが任意の型のオブジェクトへのアクセスに使用できないことを示します。
戻り値が
alignof
(
T
)
以上の場合、型
T
のアライメント要件がそのポインタによって満たされていることを示します。
フリースタンディング実装は
freestanding implementation
は
memalignment
を提供する必要があります。
目次 |
パラメータ
| p | - | クエリのアライメントへのポインタ |
戻り値
p
のアライメント値、または
0
(
p
がヌルポインタ値の場合)。
注記
一般的なプラットフォームでは
この関数は以下のように実装できます 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)
関連項目
|
(C11)
|
アライメントされたメモリを割り当てる
(関数) |
|
(C23)
|
以前に割り当てられたサイズ指定およびアライメントされたメモリを解放する
(関数) |