_freea
Deallocates or frees a memory block.
Syntax
void _freea(
void *memblock
);
Parameters
memblock
Previously allocated memory block to be freed.
Return value
None.
Remarks
The _freea
function deallocates a memory block (memblock
) that was previously allocated by a call to _malloca
. _freea
checks to see if the memory was allocated on the heap or the stack. If it was allocated on the stack, _freea
does nothing. If it was allocated on the heap, the number of freed bytes is equivalent to the number of bytes requested when the block was allocated. If memblock
is NULL
, the pointer is ignored, and _freea
immediately returns. Attempting to free an invalid pointer (a pointer to a memory block that wasn't allocated by _malloca
) might affect subsequent allocation requests and cause errors.
_freea
calls free
internally if it finds that the memory is allocated on the heap. Whether the memory is on the heap or the stack is determined by a marker placed in memory at the address immediately preceding the allocated memory.
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.
A call to _freea
must accompany all calls to _malloca
. It's also an error to call _freea
twice on the same memory. When the application is linked with a debug version of the C run-time libraries, particularly with _malloc_dbg
features enabled by defining _CRTDBG_MAP_ALLOC
, it's easier to find missing or duplicated calls to _freea
. For more information about how the heap is managed during the debugging process, see The CRT debug heap.
_freea
is marked __declspec(noalias)
, meaning that the function is guaranteed not to modify global variables. For more information, see noalias
.
Requirements
Function | Required header |
---|---|
_freea |
<stdlib.h> and <malloc.h> |
For more compatibility information, see Compatibility.
Example
See the example for _malloca
.
See also
Memory allocation
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin