Главная страница
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
15-1195413174
Mul
2007-11-18 22:12
2007.12.30
Полезные журналы по программированию


11-1181762529
=BuckLr=
2007-06-13 23:22
2007.12.30
RE_FmtUnderlineStyle


2-1196766424
Цукор
2007-12-04 14:07
2007.12.30
TOpenDialog


8-1171988250
ndg
2007-02-20 19:17
2007.12.30
изменить яркость, контраст и цветность


15-1196037648
PiterPen
2007-11-26 03:40
2007.12.30
Компиляция функций с использованием SSE и 3DNow!