Operating systems, development tools, and professional services
for connected embedded systems

Developer Resources
Blogs
Board support packages
Foundry27 projects
Forums
Hardware support listing
Online video tutorials
Product documentation

QNX Developer Support

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

alloca()

Allocate automatic space from the stack

Synopsis:

#include <alloca.h>

void* alloca( size_t size );

Arguments:

size
The number of bytes of memory to allocate.

Library:

libc

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

Description:

The alloca() function allocates space for an object of size bytes from the stack. The allocated space is automatically discarded when the current function exits.


Note: Don't use this function in an expression that's an argument to a function.

Returns:

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

Examples:

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

FILE *open_err_file( char *name )
{
    char *buffer;

    /* allocate temporary buffer for file name */
    buffer = (char *)alloca( strlen( name ) + 5 );

    if( buffer ) {
        FILE *fp;

        sprintf( buffer, "%s.err", name );
        fp = fopen( buffer, "w" );

        return fp;
    }

    return (FILE *)NULL;
}

int main( void )
{
    FILE *fp;

    fp = open_err_file( "alloca_test" );
    if( fp == NULL ) {
        printf( "Unable to open error file\n" );
    } else {
        fprintf( fp, "Hello from the alloca test.\n" );
        fclose( fp );
    }

    return EXIT_SUCCESS;
}

Classification:

Unix

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

Caveats:

Don't use alloca() as an argument to a function.

See also:

calloc(), malloc()


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