![]() |
![]() |
![]() |
![]() |
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.
![]() |
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:
| 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:
![]() |
![]() |
![]() |
![]() |

![[Previous]](../prev.gif)
![[Contents]](../contents.gif)
![[Index]](../keyword_index.gif)
![[Next]](../next.gif)
