1*5f732742SFaraz Vahedi.\" 2*5f732742SFaraz Vahedi.\" Copyright (c) 2026 Faraz Vahedi <kfv@kfv.io> 3*5f732742SFaraz Vahedi.\" 4*5f732742SFaraz Vahedi.\" SPDX-License-Identifier: BSD-2-Clause 5*5f732742SFaraz Vahedi.\" 6*5f732742SFaraz Vahedi.Dd May 17, 2026 7*5f732742SFaraz Vahedi.Dt FREE_SIZED 3 8*5f732742SFaraz Vahedi.Os 9*5f732742SFaraz Vahedi.Sh NAME 10*5f732742SFaraz Vahedi.Nm free_sized , 11*5f732742SFaraz Vahedi.Nm free_aligned_sized 12*5f732742SFaraz Vahedi.Nd C23 sized deallocation functions 13*5f732742SFaraz Vahedi.Sh SYNOPSIS 14*5f732742SFaraz Vahedi.Lb libc 15*5f732742SFaraz Vahedi.In stdlib.h 16*5f732742SFaraz Vahedi.Ft void 17*5f732742SFaraz Vahedi.Fn free_sized "void *ptr" "size_t size" 18*5f732742SFaraz Vahedi.Ft void 19*5f732742SFaraz Vahedi.Fn free_aligned_sized "void *ptr" "size_t alignment" "size_t size" 20*5f732742SFaraz Vahedi.Sh DESCRIPTION 21*5f732742SFaraz VahediThe 22*5f732742SFaraz Vahedi.Fn free_sized 23*5f732742SFaraz Vahedifunction deallocates the memory referenced by 24*5f732742SFaraz Vahedi.Fa ptr 25*5f732742SFaraz Vahedithat was previously allocated by 26*5f732742SFaraz Vahedi.Xr malloc 3 , 27*5f732742SFaraz Vahedi.Xr realloc 3 , 28*5f732742SFaraz Vahedior 29*5f732742SFaraz Vahedi.Xr calloc 3 . 30*5f732742SFaraz VahediThe 31*5f732742SFaraz Vahedi.Fa size 32*5f732742SFaraz Vahediargument shall equal the size passed to the allocation function. 33*5f732742SFaraz VahediThe result of an 34*5f732742SFaraz Vahedi.Xr aligned_alloc 3 35*5f732742SFaraz Vahedimay not be passed to 36*5f732742SFaraz Vahedi.Fn free_sized . 37*5f732742SFaraz Vahedi.Pp 38*5f732742SFaraz VahediThe 39*5f732742SFaraz Vahedi.Fn free_aligned_sized 40*5f732742SFaraz Vahedifunction deallocates memory referenced by 41*5f732742SFaraz Vahedi.Fa ptr 42*5f732742SFaraz Vahedithat was previously allocated by 43*5f732742SFaraz Vahedi.Xr aligned_alloc 3 . 44*5f732742SFaraz VahediThe 45*5f732742SFaraz Vahedi.Fa alignment 46*5f732742SFaraz Vahediand 47*5f732742SFaraz Vahedi.Fa size 48*5f732742SFaraz Vahediarguments shall equal the values supplied to the allocation function. 49*5f732742SFaraz VahediThe result of an 50*5f732742SFaraz Vahedi.Xr malloc 3 , 51*5f732742SFaraz Vahedi.Xr calloc 3 , 52*5f732742SFaraz Vahedior 53*5f732742SFaraz Vahedi.Xr realloc 3 54*5f732742SFaraz Vahedimay not be passed to 55*5f732742SFaraz Vahedi.Fn free_aligned_sized . 56*5f732742SFaraz Vahedi.Pp 57*5f732742SFaraz VahediIf 58*5f732742SFaraz Vahedi.Fa ptr 59*5f732742SFaraz Vahediis neither a null pointer nor a pointer returned by the allocation functions 60*5f732742SFaraz Vahedidescribed above for the corresponding deallocation function, the behaviour is 61*5f732742SFaraz Vahediundefined, and so is supplying a 62*5f732742SFaraz Vahedi.Fa size 63*5f732742SFaraz Vahedior 64*5f732742SFaraz Vahedi.Fa alignment 65*5f732742SFaraz Vahedithat does not match the original allocation. 66*5f732742SFaraz Vahedi.Sh IMPLEMENTATION NOTES 67*5f732742SFaraz VahediThe C standard permits an implementation to ignore the 68*5f732742SFaraz Vahedi.Fa size 69*5f732742SFaraz Vahediand 70*5f732742SFaraz Vahedi.Fa alignment 71*5f732742SFaraz Vahedihints. 72*5f732742SFaraz VahediThe current implementation forwards to 73*5f732742SFaraz Vahedi.Xr free 3 74*5f732742SFaraz Vahediwithout validating these arguments, so behaviour remains correct for 75*5f732742SFaraz Vahediwell-formed use. 76*5f732742SFaraz Vahedi.Pp 77*5f732742SFaraz VahediThese functions will be wired to the system allocator's sized deallocation, 78*5f732742SFaraz Vahedionce supported, as with the rest of the memory allocation API, so that 79*5f732742SFaraz Vahedi.Fa size 80*5f732742SFaraz Vahediand 81*5f732742SFaraz Vahedi.Fa alignment 82*5f732742SFaraz Vahedihints are used for performance and security benefits. 83*5f732742SFaraz VahediThat behaviour conforms to the practice recommended for each function in the 84*5f732742SFaraz VahediC standard. 85*5f732742SFaraz Vahedi.Sh SEE ALSO 86*5f732742SFaraz Vahedi.Xr free 3 , 87*5f732742SFaraz Vahedi.Xr malloc 3 , 88*5f732742SFaraz Vahedi.Xr calloc 3 , 89*5f732742SFaraz Vahedi.Xr realloc 3 , 90*5f732742SFaraz Vahedi.Xr aligned_alloc 3 , 91*5f732742SFaraz Vahedi.Xr jemalloc 3 92*5f732742SFaraz Vahedi.Sh STANDARDS 93*5f732742SFaraz VahediThe 94*5f732742SFaraz Vahedi.Fn free_sized 95*5f732742SFaraz Vahediand 96*5f732742SFaraz Vahedi.Fn free_aligned_sized 97*5f732742SFaraz Vahedifunctions conform to 98*5f732742SFaraz Vahedi.St -isoC-2023 . 99*5f732742SFaraz Vahedi.Sh AUTHOR 100*5f732742SFaraz Vahedi.An Faraz Vahedi Aq Mt kfv@kfv.io 101