### Function Macro

# GLib alloca

#### Declaration [src]

    #define g_alloca (
      size
    )

#### Description [src]

Allocates `size` bytes on the stack; these bytes will be freed when the current stack frame is cleaned up. This macro essentially just wraps the `alloca()` function present on most UNIX variants. Thus it provides the same advantages and pitfalls as alloca():

- `alloca()` is very fast, as on most systems it’s implemented by just adjusting the stack pointer register.

- It doesn’t cause any memory fragmentation, within its scope, separate `alloca()` blocks just build up and are released together at function end.

- Allocation sizes have to fit into the current stack frame. For instance in a threaded environment on Linux, the per-thread stack size is limited to 2 Megabytes, so be sparse with `alloca()` uses.

- Allocation failure due to insufficient stack space is not indicated with a `NULL` return like e.g. with malloc(). Instead, most systems probably handle it the same way as out of stack space situations from infinite function recursion, i.e. with a segmentation fault.

- Allowing `size` to be specified by an untrusted party would allow for them to trigger a segmentation fault by specifying a large size, leading to a denial of service vulnerability. `size` must always be entirely under the control of the program.

- Special care has to be taken when mixing `alloca()` with GNU C variable sized arrays. Stack space allocated with `alloca()` in the same scope as a variable sized array will be freed together with the variable sized array upon exit of that scope, and not upon exit of the enclosing function scope.

This function is not directly available to language bindings.

#### Parameters

`size`

  Type: `-`

  Number of bytes to allocate.