Why is the use of alloca() not considered good practice?

The answer is right there in the man page (at least on Linux):

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

Which isn’t to say it should never be used. One of the OSS projects I work on uses it extensively, and as long as you’re not abusing it (alloca‘ing huge values), it’s fine. Once you go past the “few hundred bytes” mark, it’s time to use malloc and friends, instead. You may still get allocation failures, but at least you’ll have some indication of the failure instead of just blowing out the stack.

Leave a Comment