- cstdlib[meta header]
- std[meta namespace]
- function[meta id-type]
- cpp26[meta cpp]
namespace std {
void free_aligned_sized(void* ptr, size_t alignment, size_t size);
}- size_t[link /reference/cstddef/size_t.md]
アライメントと確保時のサイズを指定して、確保したメモリを解放する。
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);
}- std::free_aligned_sized[color ff0000]
- std::aligned_alloc[link aligned_alloc.md]
- C++26
- Clang: 22 [mark noimpl]
- GCC: 16.1 [mark noimpl]
- Visual C++: 2026 Update 2 [mark noimpl]
free(): 確保したメモリを解放するfree_sized(): 確保時のサイズを指定して、確保したメモリを解放するaligned_alloc(): 指定したアライメントでメモリを確保する
- P3348R4 C++26 should refer to C23 not C17
- C++26がC23を参照するようになり、この関数が
<cstdlib>に追加された
- C++26がC23を参照するようになり、この関数が