Automatic Storage with Variable Size
------------------------------------
The function `alloca' supports a kind of half-dynamic allocation in
which blocks are allocated dynamically but freed automatically.
Allocating a block with `alloca' is an explicit action; you can
allocate as many blocks as you wish, and compute the size at run time.
But all the blocks are freed when you exit the function that `alloca'
was called from, just as if they were automatic variables declared in
that function. There is no way to free the space explicitly.
The prototype for `alloca' is in `stdlib.h'. This function is a BSD
extension.
- Function: void * alloca (size_t SIZE);
The return value of `alloca' is the address of a block of SIZE
bytes of memory, allocated in the stack frame of the calling
function.
Do not use `alloca' inside the arguments of a function call--you
will get unpredictable results, because the stack space for the
`alloca' would appear on the stack in the middle of the space for the
function arguments. An example of what to avoid is `foo (x, alloca
(4), y)'.