Алексей Елин писал(а):
т.е. ваш 1 гиг ок, а мои 2 - нет?
RTFM
Алексей Елин писал(а):
Откуда всплылО уменьшение? За какие уши притянуто? Речь шла о добавлении элемента
Блин, а нафига Вам
лишь добавление элемента ???
Если у Вас
только добавление, которое делается
один раз - делайте статический массив максимального размера, и не парьте людям мозги, тем, что неким удвоением какое-то "все" решается.
Сам смысл динамического изменения размера - заключается в возможности освобождении ресурса, для использования
его же в другом месте.
Ниоткуда оно не всплылО. Оно всегда было в исходной постановке. Независимо от того, понимает это кто-то, или нет.
Это та самая "простая вещь", которую, как оказывается - хрен объяснишь
Алексей Елин писал(а):
Ха-ха. Написали какой то фигни (это я про создателей дельфи), даже не думая "Зачем это в ЖИЗНИ может пригодится." Вы хоть сами себя читаете?
И Вас - тоже.
И о многом, в Вашем отношении, начинаю догадываться...
Алексей Елин писал(а):
Представляете, я знаю ТОЧНО как это в дельфи работает. И да, я смотрел, много раз
Дак вот - они КОПИРУЮТ если нет свободных страниц сразу после текущего блока памяти. А в реальной программе их (свободных страниц в конце блока) обычно нет
Проверьте, делая добавки к 100М-тексту (бог с ним, с гигом, если Ваша лично винда его не выделяет)
Убивать таких знатоков, блин.
Смотрим в System.pas: _LStrCat -> _LStrSetLength -> _ReallocMem
Специально отмечу, что "смотреть много раз", и понимать написанное - не всегда одно и то же.
Алексей Елин писал(а):
И просто ремепинг в средах со сборкой мусора (.Net, Java, CP) делать нельзя. Почему? Да потому что указатель после ремапинга будет другой. Дальше объяснять?
Обязательно
Начните с того, что именно Вы лично понимаете под реэпингом. Если уж (оказывается!!!) при данной операции указатель меняется.
И откройте попутно глаза: меняется ли указатель при выполнении SetLength из Mt... И как они докатились до такого "кошмара"