xref: /freebsd/lib/libc/stdlib/malloc/free_sized.3 (revision 5f732742ad5b3133a860a8969cf2bd13dc9ac358)
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