我想知道在运行下面的代码时如何处理运行时堆栈
int i;
for (i = 0; i < 100; i++) {
int v[i+1];
...
}
每次循环后堆栈都会减少并增长? 堆栈最初的分配量是否适合v [101]? 它是否由编译器优化,因此它将v视为指针并仅进行堆分配?
感谢。
答案 0 :(得分:1)
取决于编译器和优化设置。一个聪明的编译器可以发现所需的最大大小是100,并在开始时从堆栈中分配一次并重用它。堆栈分配实际上是免费的,因为它只是一个指针调整,因此使用堆没有任何意义。