_aligned_offset_malloc
指定された配置の境界にメモリを割り当てます。
構文
void * _aligned_offset_malloc(
size_t size,
size_t alignment,
size_t offset
);
パラメーター
size
要求されたメモリ割り当てのサイズ。
alignment
アラインメント値。2 の整数乗である必要があります。
offset
アラインメントを強制するためのメモリ割り当てへのオフセット。
戻り値
割り当てられたメモリ ブロックへのポインター。操作が失敗した場合は NULL
。
解説
_aligned_offset_malloc
は、入れ子になった要素に対するアラインメントが必要な状況で便利です。たとえば、入れ子になったクラスに対するアラインメントが必要になった場合などです。
_aligned_offset_malloc
は malloc
に基づいています。詳細については、 malloc
を参照してください。
_aligned_offset_malloc
は __declspec(noalias)
および __declspec(restrict)
マークされます。つまり、関数はグローバル変数を変更しないことが保証され、返されるポインターはエイリアス化されません。 詳細については、次のトピックを参照してください。 noalias
および restrict
この関数は、メモリ割り当てが失敗するか、要求されたサイズが errno
より大きかった場合に、ENOMEM
を _HEAP_MAXREQ
に設定します。 errno
の詳細については、「errno
、_doserrno
、_sys_errlist
、_sys_nerr
」を参照してください。 また、_aligned_offset_malloc
はそのパラメーターを検証します。 alignment
が 2 の累乗でない場合、または offset
が 0 以外で、size
以上の場合、この関数は無効なパラメーター ハンドラーを呼び出します (パラメーター検証で説明します。 実行の継続が許可された場合、この関数は NULL
を返し、errno
を EINVAL
に設定します。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_aligned_offset_malloc |
<malloc.h> |
例
詳細については、「_aligned_malloc
」を参照してください。