概要
アライメントと確保時のサイズを指定して、確保したメモリを解放する。
C23で<stdlib.h>に追加された関数であり、C++26で<cstdlib>に取り込まれた。
事前条件
ptrがヌルポインタであるか、もしくはaligned_alloc()が返したポインタであることptrがヌルポインタでない場合、alignmentはそのメモリの確保時に指定したアライメントと等しく、sizeは確保時に要求したサイズと等しいこと
効果
ptrがヌルポインタの場合、なにもしない- そうでない場合、
free()(ptr)と等価である
戻り値
なし
備考
- この関数はスレッドセーフである
- アライメントと確保時のサイズを処理系に渡せるため、
free()よりも効率的に解放できる可能性がある
例
#include <cstdlib>
int main()
{
// 64バイトアライメントで、256バイトの領域を確保する
void* p = std::aligned_alloc(64, 256);
std::free_aligned_sized(p, 64, 256);
}
出力
バージョン
言語
- C++26
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌
関連項目
free(): 確保したメモリを解放するfree_sized(): 確保時のサイズを指定して、確保したメモリを解放するaligned_alloc(): 指定したアライメントでメモリを確保する
参照
- P3348R4 C++26 should refer to C23 not C17
- C++26がC23を参照するようになり、この関数が
<cstdlib>に追加された
- C++26がC23を参照するようになり、この関数が