GLib.alloca
Description: Reference for GLib.alloca

### Function Macro

# GLiballoca

since: 2.0

#### Declaration

    #define g_alloca (
      size
    )

#### Description

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.

Available since: 2.0

This function is not directly available to language bindings.

#### Parameters

`size`

  Type: `-`

  Number of bytes to allocate.