Назначение []
ничего не выделяет.Это то же самое, что присваивать null
или вообще не инициализировать динамический массив.Это делает так, чтобы массив имел length
из 0
и ptr
, что равно null
.Только когда свойство ptr
массива ненулевое, у него есть память, выделенная ему.
В таком виде вы можете просто переместить объявление block
в строку, гдеВы назначаете это []
и избавляетесь от назначения.В существующем состоянии вы без необходимости повторно используете переменную снова и снова.Так как он используется только внутри цикла, это единственное место, где он должен существовать.
Если вы хотите уменьшить вероятность наличия дополнительных перераспределений массива при добавлении к нему, тогда либо используйте reserve
или std.array.appender
.
Вы действительно должны прочитать эту статью или массивы в D. Это должно вам очень помочь с вашимпонимание того, как работают массивы в D.