概要
指定したアライメントでメモリを確保する。
事前条件
- 指定するアライメント値
alignment
は、実装がサポートしている有効なアライメント値であること- POSIXの実装では、2の累乗、および
sizeof(void*)
の倍数であること
- POSIXの実装では、2の累乗、および
- サイズ値
size
は、alignment
の整数倍であること
効果
指定されたアライメントで、size
分の不定値領域を確保する。
戻り値
確保した領域へのポインタを返す。
確保できなかった場合、ヌルポインタを返す。
例
#include <cstdlib>
int main()
{
// 8バイトアライメントで、16バイトの領域を確保する
void* p = std::aligned_alloc(8, 16);
std::free(p);
}
xxxxxxxxxx
#include <cstdlib>
int main()
{
// 8バイトアライメントで、16バイトの領域を確保する
void* p = std::aligned_alloc(8, 16);
std::free(p);
}
出力
バージョン
言語
- C++17
処理系
- Clang: 3.4 ✅
- GCC: 8.3 ✅
- Visual C++: 2019 Update 3 ❌
備考
- Clangは、グローバル名前空間 (POSIXの実装) では、3.1で動作確認できた
- GCCは、グローバル名前空間 (POSIXの実装) では、4.4で動作確認できた
- Visual Studio 2019 Update 3の時点では存在が確認できない。
_aligned_malloc
という同等のWindows用機能が提供されているため、そちらを使う必要がある