### Question 7.32

What is `alloca` and why is its use discouraged?

`alloca` allocates memory which is automatically freed when the function which called `alloca` returns. That is, memory allocated with `alloca` is local to a particular function's ``stack frame'' or context.

`alloca` cannot be written portably, and is difficult to implement on machines without a conventional stack. Its use is problematical (and the obvious implementation on a stack-based machine fails) when its return value is passed directly to another function, as in `fgets(alloca(100), 100, stdin)`.

For these reasons, `alloca` is not Standard and cannot be used in programs which must be widely portable, no matter how useful it might be.

See also question 7.22.

References: Rationale Sec. 4.10.3

Read sequentially: prev next up top

This page by Steve Summit // Copyright 1995 // mail feedback