为了说明,在调试模式下调用此函数,其中不能遇到变量字符会导致堆栈溢出:
void f() { if (false) { char chars[INT_MAX]; } }
2)它更快更简单.如果一次性分配所有本地,则为本地分配空间的代码包括对函数开头的堆栈指针的一次更新,以及最后一次的更新.如果必须在该范围的开头和结尾分配和释放范围内的本地,则会获得更多的堆栈指针更新.