На сайте документации MSDN говорится о методе Array.Resize
:
Если newSize больше длины старого массива, новый массив выделено и все элементы скопированы из старого массива в новый.
Если newSize меньше длины старого массива, новый массив выделенные и элементы копируются из старого массива в новый пока новый не будет заполнен; остальные элементы в старом массиве игнорируются.
Массив - это последовательность смежных блоков памяти. Если нам нужен более крупный массив, я понимаю, что мы не можем добавить к нему память, так как рядом с ним память уже может быть заявлена некоторыми другими данными. Таким образом, мы должны требовать новую последовательность смежных блоков памяти с желаемым большим размером, копировать наши записи там и удалять наши претензии в отношении старого пространства.
Но зачем создавать новый массив меньшего размера? Почему массив не просто удаляет свою заявку на последние блоки памяти? Тогда это будет O (1) операция вместо O (n), как и сейчас.
Связано ли это с тем, как данные организованы на архитектурном или физическом уровне компьютера?