Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ALLOCA(3)		    Library Functions Manual		     ALLOCA(3)

NAME
       alloca -- memory	allocator

SYNOPSIS
       #include	<stdlib.h>

       void *
       alloca(size_t size);

DESCRIPTION
       The  alloca()  function	or  macro allocates size bytes of space	in the
       stack frame of the caller.  This	temporary space	is automatically freed
       on return.

RETURN VALUES
       alloca()	returns	a pointer to the beginning of the allocated space.

SEE ALSO
       brk(2), calloc(3), getpagesize(3), malloc(3), realloc(3)

HISTORY
       alloca()	appeared in Version 7 AT&T UNIX/32V.

BUGS
       alloca()	is machine and compiler	dependent; its use is discouraged.

       alloca()	is slightly unsafe because it cannot ensure that  the  pointer
       returned	 points	to a valid and usable block of memory.	The allocation
       made may	exceed the bounds of the stack,	or even	go further into	 other
       objects	in memory, and alloca()	cannot determine such an error.	 Avoid
       alloca()	with large unbounded allocations.

       The use of C99 variable-length arrays and alloca() in the same function
       will cause the lifetime of alloca()'s storage  to  be  limited  to  the
       block  containing the alloca().	For example, in	the following snippet,
       p's lifetime does not extend outside of the block, whereas it  would've
       if vla hadn't been defined or had been defined as a fixed-length	array:

	     char *p;
	     {
		     const int n = 100;
		     int vla[n];
		     p = alloca(32);
		     strcpy(p, "Hello, world!");
		     printf("Inside: %s\n", p);	/* Valid. */
	     }
	     printf("Outside: %s\n", p); /* Undefined. */

FreeBSD	ports 15.quarterly     February	19, 2026		     ALLOCA(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=alloca&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help