Текущий архив: 2003.03.20;
Скачать: CL | DM;
Вниз
Память и диначические массивы Найти похожие ветки
← →
Barmutik © (2003-03-10 20:08) [0]Здравствуйте все !
Возникала следующая проблема:
Есть тип:
TMyArray = array of Integer;
TMyRecord = record
Value: Integer;
Parents: TMyArray;
Childs: TMyArray;
end;
Есть переменная:
MyVariable: array of TMyRecord;
Вопрос:
Почему если при работе с данным массивом я произвожу приращение количества элементов по 1 то память расходуется оечнь большими порциями, хотя если я провожу пакетное единовременное расширение то всё нормально ??
К примеру:
for I := 0 to 3000 do
begin
SetLength(MyVariable, Length(MyVariable) + 1);
....
....
end;
То я теряю около 40 мегов на этой операции !!!
А если так:
SetLength(MyVariable, 3000);
for I := 0 to 3000 - 1 do
begin
MyVariable[I] := ......
end;
То всё происходит нормально и расходуется нормально как и должно 100 килов памяти.
Подскажите как быть ??? Приведённый пример служит лиш иллюстрацией и не может быть использован везде.
← →
Романов Р.В. © (2003-03-10 20:22) [1]При увеличении размера массива выделяется новый кусок памяти и массив копируется туда. Занимаемая ранее память освободится... потом... наверное... :)
Увеличивай размер массива с запасом. Например на 10% ненужное потом отрежешь
Страницы: 1 вся ветка
Текущий архив: 2003.03.20;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.018 c