GNU Info

Info Node: (libc.info)Variable Size Automatic

(libc.info)Variable Size Automatic


Prev: Obstacks Up: Memory Allocation
Enter node , (file) or (file)node

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)'.

Alloca Example
Example of using `alloca'.
Advantages of Alloca
Reasons to use `alloca'.
Disadvantages of Alloca
Reasons to avoid `alloca'.
GNU C Variable-Size Arrays
Only in GNU C, here is an alternative
method of allocating dynamically and freeing automatically.

automatically generated by info2www version 1.2.2.9