[Previous] [Contents] [Index] [Next]

Caution: This version of this document is no longer maintained. For the latest documentation, see http://www.qnx.com/developers/docs.

malloc()

Allocate memory

Synopsis:

#include <stdlib.h>

void* malloc( size_t size );

Arguments:

size
The number of bytes to allocate.

Library:

libc

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

Description:

The malloc() function allocates a buffer of size bytes.

If size is zero, malloc() returns a valid non-NULL pointer which is valid only to a corresponding free() call. You shouldn't assume that a pointer returned by malloc(0) actually points to any valid memory.


Note: This function allocates memory in blocks of _amblksiz bytes (a global variable defined in <stdlib.h>).

Returns:

A pointer to the start of the allocated memory, or NULL if an error occurred (errno is set).

Errors:

ENOMEM
Not enough memory.
EOK
No error.

Examples:

#include <stdlib.h>

int main( void )
{
    char* buffer;

    buffer = (char* )malloc( 80 );
    if( buffer != NULL ) {
        /* do something with the buffer */
        ...

        free( buffer );
    }
    
    return EXIT_SUCCESS;
}

Classification:

ANSI, POSIX 1003.1

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

Caveats:

In QNX 4, nothing is allocated when you malloc() 0 bytes. Be careful if your code is ported between QNX 4 and QNX Neutrino.

See also:

calloc(), free(), realloc(), sbrk()

The Heap Analysis: Making Memory Errors a Thing of the Past chapter of the Neutrino Programmer's Guide.


[Previous] [Contents] [Index] [Next]