是否';D';语言支持';C';像弗拉?
“D”语言是否支持本地分配的类似于“C”的可变长度数组 大概是这样的:是否';D';语言支持';C';像弗拉?,d,D,“D”语言是否支持本地分配的类似于“C”的可变长度数组 大概是这样的: void main() { size_t szArr = 3; int[szArr] arr; } 不,不是这样的运行时变量。您需要使用另一种方法: alloca可以分配运行时大小的堆栈空间,就像在C中一样,然后对其进行切片 int[] a = (cast(int*) alloca(size * int.sizeof))[0 .. size]; 由于alloca的工作方式,无法抽象为函数。不过你可
void main()
{
size_t szArr = 3;
int[szArr] arr;
}
不,不是这样的运行时变量。您需要使用另一种方法:
可以分配运行时大小的堆栈空间,就像在C中一样,然后对其进行切片alloca
int[] a = (cast(int*) alloca(size * int.sizeof))[0 .. size];
alloca
的工作方式,无法抽象为函数。不过你可以把它做成一根混合线
- 您可以使用静态数组,如另一个答案中所述,然后将其切片为一个大小。比如:
int[1024] buffer; int[] runtimeSized = size <= buffer.length ? buffer[0 .. size] : (new int[](size);
int[1024]缓冲区;
int[]runtimeSized=大小正确答案。对于从alloca获得的切片,使用
属性检查切片是否未返回可能是合理的。目前的phobos库还有一个scope
分配器,据我所知,它可以使用std.experimental.algorithm.showcase:StackFront
为您创建数组。makeArray