Нужно ли обнулять переменные типа UTF8String?

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Нужно ли обнулять переменные типа UTF8String?

Сообщение qivi » 04.06.2012 11:11:45

Вопрос собственно в заголовке темы но поясню...

Может ли не обнуление переменных типа UTF8String, являющихся полями типа данных производного от record, который в свою очередь является типом данных динамических массивов, (которых в свою очередь в программе туевая хуча)... дак вот, может ли не обнуление этих переменных типа UTF8String являться причиной утечки памяти.
В данный момент я просто обнуляю массив: SetLength(0,Massiv);.
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Нужно ли обнулять переменные типа UTF8String?

Сообщение Sergei I. Gorelkin » 04.06.2012 12:31:01

Не должно, по крайней мере в теории.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Нужно ли обнулять переменные типа UTF8String?

Сообщение Ism » 04.06.2012 15:12:37

Утечки не будет, но значение UTF8String все равно занимает память, поэтому желательно обнулять
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Нужно ли обнулять переменные типа UTF8String?

Сообщение Sergei I. Gorelkin » 04.06.2012 15:24:51

При обнулении массива элементов управляемых типов все его элементы также обнулятся.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Нужно ли обнулять переменные типа UTF8String?

Сообщение zub » 04.06.2012 15:54:41

>>Утечки не будет, но значение UTF8String все равно занимает память, поэтому желательно обнулять
если стринговая переменная отжила свое и по какойто причине не финализирована, то это самая что нинаесть утечка памяти, о чем heaptrc не постесняется сообщить.

>>В данный момент я просто обнуляю массив: SetLength(0,Massiv);
по идее этого достаточно, если в recorde`е нет полей типа указатель на другие record`ы - в этом случае в тех других record`ах нужно стринги обнулить ручками.
но если heaptrc намекает на то что память утекает внутри обнуляемого таким образом массива и других вариантов утечки с первого взгляда нет - я бы попробовал финализировать всё руками для надежности
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Нужно ли обнулять переменные типа UTF8String?

Сообщение Ism » 04.06.2012 16:07:37

http://articles.org.ru/cfaq/index.php?qid=2464
Перед выходом из процедуры компилятор вставляет специальные функции финализации, ответственные за освобождение выделенной динамической памяти.

Относится ли это к UTF8String ?
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Нужно ли обнулять переменные типа UTF8String?

Сообщение zub » 04.06.2012 18:41:22

>>Относится ли это к UTF8String ?
это относится ко всем string`ам, за исклением "коротких" shortstring, но зависит от настройки компилятора (возможно string=shortstring).
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru
cron