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