Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.30;
Скачать: CL | DM;

Вниз

Динамический массив   Найти похожие ветки 

 
Иван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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
2-1196927339
O.O
2007-12-06 10:48
2007.12.30
Запуск приложения для Windows под Линукс


2-1196854638
Алексей11
2007-12-05 14:37
2007.12.30
таймер


15-1196016368
@!!ex
2007-11-25 21:46
2007.12.30
Прокомментируйте сборку


15-1196291049
Германн
2007-11-29 02:04
2007.12.30
Локальный логический диск vs сетевой диск


2-1196940482
smartleds
2007-12-06 14:28
2007.12.30
Коллеги подскажите как заданную ячейку в String Grid