在循环内的动态数组中分配的运行时堆栈大小

时间:2014-04-26 23:45:42

标签: c memory-management stack

我想知道在运行下面的代码时如何处理运行时堆栈

   int i;
   for (i = 0; i < 100; i++) {
        int v[i+1];
        ...
   }

每次循环后堆栈都会减少并增长? 堆栈最初的分配量是否适合v [101]? 它是否由编译器优化,因此它将v视为指针并仅进行堆分配?

感谢。

1 个答案:

答案 0 :(得分:1)

取决于编译器和优化设置。一个聪明的编译器可以发现所需的最大大小是100,并在开始时从堆栈中分配一次并重用它。堆栈分配实际上是免费的,因为它只是一个指针调整,因此使用堆没有任何意义。