Ну, во-первых, это означает, что содержимое нового массива можно считать ненулевым .... и неизменным.
Без этого копирования другой поток может измените исходный массив во время вызова на ConcatArray
, что, вероятно, может вызвать исключение или даже вызвать ошибку безопасности.При копировании входной массив может быть изменен в любое время - каждый элемент будет прочитан ровно один раз, поэтому несоответствия быть не может.(Результат может быть смесью старых и новых элементов, но вы не получите повреждения памяти.)
Предположим, что ConcatArray
доверяет массовому копированию строк в переданном массиве.без проверки переполнения буфера.Затем, если вы измените входной массив в нужное время, вы можете закончить запись вне выделенной памяти.Badness.С этой защитной копией система может быть 1 уверена, что общая длина действительно равна общей длине.
1 Хорошо, если только отражение не используется дляизменить содержимое строки.Но это не может быть сделано без достаточно высоких разрешений - тогда как изменение содержимого массива легко.