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  re-
     turn.

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 re-
     turned 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 life-
     time 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