【问题标题】:Variable Length Array可变长度数组
【发布时间】:2020-11-20 11:04:09
【问题描述】:

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

非常感谢。

【问题讨论】:

    标签: c c99


    【解决方案1】:

    您也可以使用一些容器,例如java中的ArrayList或c/c++中的vector

    【讨论】:

    • -1 与问题无关(如何实现 C99 的功能)。
    【解决方案2】:

    它只是一个动态大小的数组(取决于实现,但最常见的是在堆栈上)。这很像过去的alloca,除了sizeof 将返回数组的实际大小,这意味着数组的大小也必须存储在某个地方(也取决于实现,但可能也在堆栈上)。

    【讨论】:

    • 这并不完全正确,因为在创建 alloca() 数组后无法查询它的大小,但 sizeof 适用于 VLA(所以如果你调用 sizeof在数组上,该大小必须保存在某个地方)。
    • @caf:好点 - 我猜大小还需要存储在某个地方(取决于实现)然后 - 我会更新我的答案。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 2012-12-17
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多