Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1196718370
ProgRAMmer Dimonych
2007-12-04 00:46
2007.12.30
От теории к практике


3-1188048232
ChaoX
2007-08-25 17:23
2007.12.30
Уникальный индекс для строки


2-1196795078
olegusis
2007-12-04 22:04
2007.12.30
функция Random


8-1171800032
Snakecatcher
2007-02-18 15:00
2007.12.30
Красивая форма


2-1196762672
Леони
2007-12-04 13:04
2007.12.30
SQL и Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский