【发布时间】:2016-02-20 02:50:43
【问题描述】:
所以我在这里提出了一个关于堆栈空间的非常基本的问题。我读过堆栈中的变量必须在编译时知道,但我不确定这有多准确。让我们来看看这个sn-p:
int main(int argc, char*argv[])
{
int numProcesses = argv[1];
int arr[numProcesses] = {};
...
}
当然,编译器在编译时无法知道 numProcesses 的值,以及 arr[] 的大小。那么 arr[numProcesses] 是如何、何时何地分配的呢?谢谢你的回答,我相信这会是一个有见地的答案。
【问题讨论】:
-
GCC 有一个扩展,允许在堆栈上分配可变长度数组。 C99 使其成为 C 的官方特性。
-
一个堆栈,在运行时。假装编译器为您调用
alloca。 (虽然alloca是一个非标准函数) -
不确定反对票是关于什么的......
标签: c stack command-line-arguments compile-time