C语言中VLA的大小存储位置及栈释放机制咨询(含alloca)
变长数组(VLA)栈存储的疑问
在C语言中,你可以编写如下代码:
int arr[i];
这段代码定义的是变长数组(VLA)——大小在编译时未知的数组,大多数实现会将其存储在栈上。
核心问题
在这类将VLA存储于栈的实现中,运行时会把数组的大小存储在某个位置吗?如果是,存在哪里?如果不是,当数组超出作用域时,运行时怎么知道要把栈指针递减多少?
注:该问题同样适用于alloca函数。
内容的提问来源于stack exchange,提问作者דניאל פ.ח.
相关产品推荐
相关产品推荐

