37. Что такое copy-on-write?Теория
Дополнительные вопросы
1. Создастся ли вторая копия массива, если эту копию не меняют?
1. Создастся ли вторая копия массива, если эту копию не меняют?
Copy-on-write это семантика value type, при которой большой буфер не копируется в момент присваивания. Копия буфера делается на первой записи, и только если буфер ещё кто-то делит.
Так устроены Array, Dictionary, Set и String. Снаружи присваивание выглядит как копия. Внутри, пока массив не меняют, оба значения смотрят на один буфер.
1. Нет. Чтение и передача копии буфер не дублируют. Вторая копия появляется, когда в одну из переменных пишут, а буфер в этот момент не уникален. Если ссылка и так одна, запись идёт в тот же буфер.