free
Deallocates or frees a memory block.
Syntax
void free(
void *memblock
);
Parameters
memblock
Previously allocated memory block to be freed.
Remarks
The free
function deallocates a memory block (memblock
) that was previously allocated by a call to calloc
, malloc
, or realloc
. The number of freed bytes is equivalent to the number of bytes requested when the block was allocated (or reallocated, for realloc
). If memblock
is NULL
, the pointer is ignored, and free
immediately returns. Attempting to free an invalid pointer (a pointer to a memory block that wasn't allocated by calloc
, malloc
, or realloc
) may affect subsequent allocation requests and cause errors.
If an error occurs in freeing the memory, errno
is set with information from the operating system on the nature of the failure. For more information, see errno
, _doserrno
, _sys_errlist
, and _sys_nerr
.
After a memory block has been freed, _heapmin
minimizes the amount of free memory on the heap by coalescing the unused regions and releasing them back to the operating system. Freed memory that isn't released to the operating system is restored to the free pool and is available for allocation again.
When the application is linked with a debug version of the C run-time libraries, free
resolves to _free_dbg
. For more information about how the heap is managed during the debugging process, see The CRT debug heap.
free
is marked __declspec(noalias)
, meaning that the function is guaranteed not to modify global variables. For more information, see noalias
.
To free memory allocated with _malloca
, use _freea
.
By default, this function's global state is scoped to the application. To change this behavior, see Global state in the CRT.
Requirements
Function | Required header |
---|---|
free |
<stdlib.h> and <malloc.h> |
For more compatibility information, see Compatibility.
Example
See the example for malloc
.
See also
Memory allocation
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea