free()

Updated: April 19, 2023

Deallocate a block of memory

Synopsis:

#include <stdlib.h> 

void free( void* ptr );

Arguments:

ptr
A pointer to the block of memory that you want to free. It's safe to call free() with a NULL pointer.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The free() function deallocates the memory block specified by ptr, which was previously returned by a call to calloc(), malloc(), posix_memalign(), or realloc().

Examples:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

int main( void )
{
    char *buffer;

    buffer = (char *)malloc( 80 );
    if( buffer == NULL ) {
        printf( "Unable to allocate memory\n" );
        return EXIT_FAILURE;
    } else {
        /* rest of code goes here */

        free( buffer );  /* deallocate buffer */
    }
    
    return EXIT_SUCCESS;
}

Classification:

ANSI, POSIX 1003.1

Safety:  
Cancellation point No
Interrupt handler No
Signal handler No
Thread Yes

Caveats:

Calling free() on a pointer already deallocated by a call to free() or realloc() could corrupt the memory allocator's data structures.