在调用alloca() 的函数返回的时候, 它分配的内存会自动释放。
也就是说, 用alloca 分配的内存在某种程度上局部于函数的“堆栈帧” 或上下文中。
alloca() 不具可移植性, 而且在没有传统堆栈的机器上很难实现。
当它的返回值直接传入另一个函数时会带来问题, 如fgets(alloca(100), 100, stdin)。
由于这些原因, alloca() 不合标准, 不宜使用在必须广泛移植的程序中, 不管它可能多么有用。
既然C99 支持变长数组(VLA), 它可以用来更好的完成alloca() 以前的任务。
参见问题7.19。