---
name: "alloca"
section: "3"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/alloca"
---

# alloca(3)

memory allocator

## NAME

**alloca** – memory allocator

## SYNOPSIS

**#include \<alloca.h\>**

or\

**#include \<stdlib.h\>**

*void* *\**\

**alloca**(*size\_t size*);

## DESCRIPTION

The **alloca**() 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)](/brk/2.md), [calloc(3)](/calloc/3.md), [getpagesize(3)](/getpagesize/3.md), [malloc(3)](/malloc/3.md), [realloc(3)](/realloc/3.md)

## HISTORY

**alloca**() appeared in AT&T UNIX v32.

## 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**()
