Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];
ВнизДинамический массив Найти похожие ветки
← →
Иван1 (2007-12-07 12:32) [0]Надо ли освобождать память занятую динамическим массивом (если он мне больше не нужен)?
var
a: array of TMyRecord;
begin
SetLength(a, 1000);
...
SetLength(a, 0); // ???
← →
Ins © (2007-12-07 12:33) [1]Сама освободится при выходе идентификатора a за область видимости, в том и фишка финализируемых типов.
← →
Anatoly Podgoretsky © (2007-12-07 12:33) [2]А тебе что тяжело написать SetLength(a, 0), считаешь лучше гадать надо или не надо?
← →
Ins © (2007-12-07 12:46) [3]
> при выходе идентификатора a за область видимости
Если это единственная ссылка на массив, разумеется. Вообще тут дело в том, что для финализируемых типов, коими являются длинные строки, динамические массивы, интерфейсы и варианты, ведется подсчет ссылок - сколько идентификаторов ссылается на данный объект. Компилятор автоматически вставляет код инициализации и финализации.var
a: array of TMyRecord;
begin // Тут вставляется код инициализации
...
end; // а тут - код финализации
Код финализации сводится к уменьшению числа ссылок, и если оно достигло нуля - освобождения памяти. Тут подробнее:
http://www.rsdn.ru/article/Delphi/dynarrays.xml
← →
Anatoly Podgoretsky © (2007-12-07 12:52) [4]> Ins (07.12.2007 12:33:01) [1]
Ты наверно документацию читал?
← →
Ins © (2007-12-07 13:26) [5]
> Ты наверно документацию читал?
Не помню, пьяный был... :) Но читать документацию в любом случае полезнее, чем гадать и тем более писать код не задумываясь.
← →
Anatoly Podgoretsky © (2007-12-07 14:11) [6]А вот автор не читал.
Но я советую, если не читаешь, то делай явно, надежно.
← →
Kolan © (2007-12-07 14:55) [7]Хм, дим массив — это тип с управляемым временем жизни, и следовательно делать SetLength(a, 0) ненадо, все сделает Compiler magic.
То есть
> Надо ли освобождать память занятую динамическим массивом
Нет.
← →
Ins © (2007-12-07 15:28) [8]
> Но я советую, если не читаешь, то делай явно, надежно.
Ну а я, соответственно, почитать и разобраться ;) Если это конечно не противоречит религиозным убеждениям...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c