alloca(3) - phpMan

Command: man perldoc info search(apropos)  


ALLOCA(3)                  Linux Programmer's Manual                 ALLOCA(3)



NAME
       alloca - allocate memory that is automatically freed

SYNOPSIS
       #include <alloca.h>

       void *alloca(size_t size);

DESCRIPTION
       The  alloca()  function  allocates  size  bytes  of space in the stack frame of the
       caller.  This temporary space is automatically freed when the function that  called
       alloca() returns to its caller.

RETURN VALUE
       The  alloca()  function  returns a pointer to the beginning of the allocated space.
       If the allocation causes stack overflow, program behavior is undefined.

CONFORMING TO
       This function is not in POSIX.1-2001.

       There is evidence that the alloca() function appeared in 32V, PWB, PWB.2, 3BSD, and
       4BSD.  There is a man page for it in 4.3BSD.  Linux uses the GNU version.

NOTES
       The  alloca()  function  is  machine- and compiler-dependent.  For certain applica-
       tions, its use can improve  efficiency  compared  to  the  use  of  malloc(3)  plus
       free(3).   In  certain  cases, it can also simplify memory deallocation in applica-
       tions that use longjmp(3) or siglongjmp(3).  Otherwise, its use is discouraged.

       Because the space allocated by alloca() is allocated within the stack  frame,  that
       space  is  automatically  freed  if the function return is jumped over by a call to
       longjmp(3) or siglongjmp(3).

       Do not attempt to free(3) space allocated by alloca()!

   Notes on the GNU Version
       Normally, gcc(1) translates calls to alloca() with inlined code.  This is not  done
       when either the -ansi, -std=c89, -std=c99, or the -fno-builtin option is given (and
       the header <alloca.h> is not included).  But beware!  By default the glibc  version
       of <stdlib.h> includes <alloca.h> and that contains the line:

           #define alloca(size)   __builtin_alloca (size)

       with messy consequences if one has a private version of this function.

       The  fact  that the code is inlined means that it is impossible to take the address
       of this function, or to change its behavior by linking with a different library.

       The inlined code often  consists  of  a  single  instruction  adjusting  the  stack
       pointer,  and  does  not  check  for  stack overflow.  Thus, there is no NULL error
       return.

BUGS
       There is no error indication if the stack  frame  cannot  be  extended.   (However,
       after  a failed allocation, the program is likely to receive a SIGSEGV signal if it
       attempts to access the unallocated space.)

       On many systems alloca() cannot be used inside the list of arguments of a  function
       call, because the stack space reserved by alloca() would appear on the stack in the
       middle of the space for the function arguments.

SEE ALSO
       brk(2), longjmp(3), malloc(3)

COLOPHON
       This page is part of release 3.22 of the Linux man-pages project.  A description of
       the  project, and information about reporting bugs, can be found at http://www.ker-
       nel.org/doc/man-pages/.



GNU                               2008-01-24                         ALLOCA(3)

Generated by $Id: phpMan.php,v 4.55 2007/09/05 04:42:51 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2017-12-12 04:37 @127.0.0.1 CrawledBy CCBot/2.0 (http://commoncrawl.org/faq/)
Valid XHTML 1.0!Valid CSS!