2017 ОБНОВЛЕНИЕ: В любой недавней версии DMD использование инициализатора массива для статического массива больше не выделяется, даже если статический массив является локальной переменной (т. Е. Размещается в стеке).
Вы можете проверитьСделайте это самостоятельно, создав функцию, в которой инициализируется статический массив, а затем пометив функцию как @nogc и наблюдая, компилируется ли она.Пример:
import std.random;
import std.stdio;
int[4] testfunc(int num) @nogc
{
return [0, 1, num, 3];
}
int main()
{
int[4] arr = testfunc(uniform(0, 15));
writeln(arr);
return 0;
}
Поскольку testfunc () компилируется, несмотря на то, что он @nogc, мы знаем, что инициализатор массива не выделяет.