Tad писал(а):
насколько я знаю при каждом SetLength, если длинна становится больше предыдущей, то происходит резирвирование новой памяти с достаточной длинной и "старый массив" копируется в новую память. Потом "старый массив" уничтожается.Все правильно, так оно и работает. В любом случае, выделяется память всегда кластером, называемым грануляцией, но это значение, как правило, постоянно, и равно, ЕМНИП, 65536 байт для сиcтем Win.
hitman249 писал(а):
это ведь аналог "List"Не все, только табличный кластерный массив использует List для хранения указателей на кластеры. Цепочный кластерный массив -- аналог нашей MT технологии, где каждый элемент цепи -- это структура, состоящая из заголовка и, собственно, самого массива, и он работает быстрее табличного
------------ Дoбавленo в 13.34:
Я просто рассмотрел алгоритм разных построений кластерного массива для создания такого же кластерного массива из дискретных элементов пакета
------------ Дoбавленo в 13.44:
Вот, собственно, аналог такого массива на рассыпухе. Работает только на увеличение, на уменьшение не позволяет один элемент, который неплохо бы допилить. Получилось что-то среднее между цепочным и табличным алгоритмом, но концепция доступа к элементам одна. При небольшой переделке можно из этой схемы сделать схему с матрицей любых допустимых данных