free
Defined in header
<stdlib.h>
|
||
void
free
(
void
*
ptr
)
;
|
||
Deallocates the space previously allocated by malloc() , calloc() , aligned_alloc() , (since C11) or realloc() .
If
ptr
is a null pointer, the function does nothing.
The behavior is undefined if the value of
ptr
does not equal a value returned earlier by
malloc()
,
calloc()
,
realloc()
, or
aligned_alloc()
(since C11)
.
The behavior is undefined if the memory area referred to by
ptr
has already been deallocated, that is,
free()
,
free_sized()
,
free_aligned_sized()
(since C23)
, or
realloc()
has already been called with
ptr
as the argument and no calls to
malloc()
,
calloc()
,
realloc()
, or
aligned_alloc()
(since C11)
resulted in a pointer equal to
ptr
afterwards.
The behavior is undefined if after
free()
returns, an access is made through the pointer
ptr
(unless another allocation function happened to result in a pointer value equal to
ptr
).
A call to
|
(since C11) |
Parameters
ptr | - | pointer to the memory to deallocate |
Return value
(none)
Notes
The function accepts (and does nothing with) the null pointer to reduce the amount of special-casing. Whether allocation succeeds or not, the pointer returned by an allocation function can be passed to
free()
.
Example
#include <stdlib.h> int main(void) { int *p1 = malloc(10*sizeof *p1); free(p1); // every allocated pointer must be freed int *p2 = calloc(10, sizeof *p2); int *p3 = realloc(p2, 1000*sizeof *p3); if(p3) // p3 not null means p2 was freed by realloc free(p3); else // p3 null means p2 was not freed free(p2); }
References
- C23 standard (ISO/IEC 9899:2024):
-
- 7.24.3.3 The free function (p: 365)
- C17 standard (ISO/IEC 9899:2018):
-
- 7.22.3.3 The free function (p: 254)
- C11 standard (ISO/IEC 9899:2011):
-
- 7.22.3.3 The free function (p: 348)
- C99 standard (ISO/IEC 9899:1999):
-
- 7.20.3.2 The free function (p: 313)
- C89/C90 standard (ISO/IEC 9899:1990):
-
- 4.10.3.2 The free function
See also
allocates memory
(function) |
|
(C23)
|
deallocates previously allocated sized memory
(function) |
(C23)
|
deallocates previously allocated sized and aligned memory
(function) |
C++ documentation
for
free
|