2010-05-03 131 views
8

我想知道如何管理一个可变长度数组(为了有可变长度数组,在堆栈上保留了哪些额外的变量或数据结构)。可变长度数组

非常感谢。

回答

4

它只是一个动态大小的数组(依赖于实现,但最常见的是堆栈)。这很像昔日alloca,不同之处在于sizeof将返回数组的实际大小,这意味着数组的大小也必须保存在某个地方(依赖于实现好,但可能在堆栈上太)。

+1

这并不完全正确,因为没有办法,它已被创建之后询问了'ALLOCA的大小()'数组,但'sizeof'工作在沃拉斯(所以如果你可以在数组上调用'sizeof',这个大小必须保存在某个地方)。 – caf 2010-05-04 01:20:25

+0

@caf:好点 - 我猜大小也需要存储在某个地方(依赖于实现),那么 - 我会更新我的答案。 – 2010-05-04 05:59:25

1

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

-2

或者你可以使用一些容器,例如, ArrayList的在用C java或矢量/ C++

+0

-1没有什么关系的问题(如何C99的功能可能实现)。 – 2010-05-04 14:41:57