alloca()
QNX SDP8.0C Library ReferenceAPIDeveloper
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. Since it is a macro and it evaluates the argument more than once, doing so may result in unexpected behaviour.
Returns:
A pointer to the start of the allocated memory, or NULL if there wasn't enough memory.
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:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | Yes |
Thread | Yes |
Caveats:
Don't use alloca() as an argument to a function. Since it is a macro and it evaluates the argument more than once, doing so may result in unexpected behaviour.
Page updated: