假设我有以下函数,它使用可变长度数组:
void func(int size)
{
int var1;
int arr[size];
int var2;
...
}
编译器如何确定的地址var2
?
我能想到的唯一方法是放在andarr
之后。var1
var2
但是在那种情况下,如果有几个变长数组呢?
将它们全部放在“正常”变量之后只会有助于解析第一个变量的地址。
我在这里的隐含假设是所有局部变量(包括 VLA)都分配在堆栈上。
我意识到它不是由 C99 标准定义的,所以问题本质上是关于编译的。