可变长度数组

8

我想了解如何管理可变长度数组(为了拥有可变长度数组,需要在栈上保留哪些额外变量或数据结构)。

非常感谢。

3个回答

4

这只是一个动态大小的数组(实现依赖,但通常在堆栈上)。它与旧日的alloca基本相似,唯一的例外是sizeof将返回数组的实际大小,这意味着数组的大小也必须存储在某个地方(实现依赖,但可能也存储在堆栈上)。


1
这并不完全正确,因为在创建alloca()数组后无法查询其大小,但是sizeof可以用于可变长度数组(因此如果您在数组上调用sizeof,那么该大小必须被保存在某个地方)。 - caf
@caf:说得好 - 我猜大小也需要在某个地方存储(依赖于实现) - 我会更新我的答案。 - Paul R

1
变长数组的大小是在运行时确定的,而不是编译时。
它的管理方式取决于编译器。
例如,GCC在堆栈上分配内存。
但没有特殊的结构。它只是一个普通的数组,在运行时其大小已知。

-2

另外你也可以使用一些容器,例如java中的ArrayList或者c/c++中的vector。


-1与问题(C99的一个特性如何实现)无关。 - Pete Kirkham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接