Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];

Вниз

Нужно ли явно освобождать строки и дин.массивы в структуре?   Найти похожие ветки 

 
Ruzzz   (2009-08-31 03:34) [0]

Есть структура, для которой делаю New и Dispose, если среди полей структуры есть строки и динамические массивы, то нужно ли перед Dispose вызывать для таких полей SetLength(0)? Думал что нужно, но вот поэкспериментировал со строками, и оказывается что если не вызывать SetLength(0) то утечек памяти нет. Да и нашел в IniFiles в классе TStringHash в методах Remove и Clear освобождается структура THashItem имеющая поле-строку, и там НЕ освобождают явно эту строку перед Dispose. То есть компилятор следит если в структуре есть строки и дин. массивы, то при освобождении (Dispose) структуры он автоматически освобождает и эти строки? Не знаю почему, но для классов я и не думал никогда освобождать строки в Destroy :), но вот для структур почему-то всегда думал что освобождать нужно :)


 
MBo ©   (2009-08-31 05:33) [1]

Note:
It is preferable to use the New and Dispose procedures rather than GetMem and FreeMem. When using New and Dispose , there is no need to explicitly call Finalize .

Т.е. Dispose - умная процедура, сама финализирует динмассивы и строки


 
oxffff ©   (2009-08-31 08:45) [2]


> Ruzzz   (31.08.09 03:34)  


Dispose - параметризованный финализатор.


 
oxffff ©   (2009-08-31 08:45) [3]


> oxffff ©   (31.08.09 08:45) [2]


+Deallocator



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
11-1213908689
Dy1
2008-06-20 00:51
2011.04.03
ToolBar


1-1251447036
znayu
2009-08-28 12:10
2011.04.03
ESC коды управления матричным принтером


2-1294380604
mefodiy
2011-01-07 09:10
2011.04.03
Разница в представлении данных MySQL.User в D7 и D2010


1-1251675285
Ruzzz
2009-08-31 03:34
2011.04.03
Нужно ли явно освобождать строки и дин.массивы в структуре?


2-1294271425
Anthony
2011-01-06 02:50
2011.04.03
Использование процедуры Break





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский