【发布时间】:2023-04-05 19:09:01
【问题描述】:
我了解在 VS 中所有变量都必须在块的顶部声明,但如果我想要一个 VLA,即。如果我想做这样的事情:
int result = runalgorithm();
int vla[result];
上面的代码无效,因为vla必须声明在顶部。除了创建一个任意大的数组之外,还有什么好的解决方案?
【问题讨论】:
-
int* vla = malloc ( result * sizeof *vla);使用后,free(vla) -
Visual Studio 过去did not support VLA,据我所知仍然没有。
-
@Shafik Yaghmour:谢天谢地,它确实支持_alloca,其用途大致相同。
-
谢谢你这个帅哥。这应该可以解决我的问题。
-
C89/C90 要求一个块包含一系列声明,后跟一系列语句。 C99 放宽了该要求并允许混合声明和声明。您问题中的两行代码都是声明,因此它们不违反 C89/C90 限制。问题是 C89/C90 不支持 VLA。
标签: c arrays c99 c89 variable-length-array