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