2.1.1 void* alloca

void* alloca(size_t __size)

This temporary space is automatically freed when the function that called alloca() returns to its caller. Avr-libc defines the alloca() as a macro, which is translated into the inlined __builtin_alloca() function. The fact that the code is inlined, means that it is impossible to take the address of this function, or to change its behaviour by linking with a different library.

Remember:

alloca() returns a pointer to the beginning of the allocated space. If the allocation causes stack overflow, program behaviour is undefined.

CAUTION:

Avoid use alloca() inside the list of arguments of a function call.