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) |
Contents |
[edit] Parameters
ptr | - | pointer to the memory to deallocate |
[edit] Return value
(none)
[edit] 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()
.
[edit] 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); }
[edit] 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
[edit] 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
|