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