Главная страница
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.02 c
15-1196450055
Dmitry_177
2007-11-30 22:14
2007.12.30
помогите плиз! не опредесяется внешний жесткий диск


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


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


2-1196676131
Dracula
2007-12-03 13:02
2007.12.30
CallBack из DLL


15-1196174838
All More system
2007-11-27 17:47
2007.12.30
Автопоиск в висте работает в фоновом режиме