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

Вниз

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

 
NovichoK2   (2015-03-23 21:52) [0]

смотрю одну библиотеку для чтения тегов mp3 файлов. есть такой код:

TID3LyricsFrame = class
       ID: String;
       Data: String;
end;

LyricsFrame:= TID3LyricsFrame.Create;
LyricsFrame.data:= xxxx;
...
затем уничтожается просто:

FreeAndNil(LyricsFrame);

подскажите, утечки памяти тут не будет, строковые параметры освободятся правильно?

или вначале нужно присвоить пустую строку и затем удалить?

LyricsFrame.data:= "";
FreeAndNil(LyricsFrame);

или это с Pchar я перепутал? ))


 
MBo ©   (2015-03-23 22:02) [1]

Освободятся. Компилятор справится.


 
KilkennyCat ©   (2015-03-23 22:04) [2]

как-то неправильно звучит: присвоить пустую строку...
например:
есть var а :String[24];
какая разница между a ="лрппчрячпспмоилтдждлорпа" и а = "" ?

имеет смысл вести беседу об освобождении памяти, разыменовании указателей и т.д.
и тогда ответ будет ясен.


 
кгшзх ©   (2015-03-23 22:19) [3]

подскажите, утечки памяти тут не будет, строковые параметры освободятся правильно?

а чем твое "тут" отличается от этого "тут" ?

function why()
var mystring : string;
begin
mystring := "ну а здесь почему бы не быть утечке?";
end;

или ты и в этом случае боишься утечки?


 
Германн ©   (2015-03-24 02:06) [4]


> KilkennyCat ©   (23.03.15 22:04) [2]
>
> как-то неправильно звучит: присвоить пустую строку...
> например:
> есть var а :String[24];
> какая разница между a ="лрппчрячпспмоилтдждлорпа" и а =
> "" ?
>
> имеет смысл вести беседу об освобождении памяти, разыменовании
> указателей и т.д.

Присвоение переменной типа string значения "" это и есть освобождение памяти выделенной под эту строку, если на неё более нет других ссылок. Если есть ещё ссылки, то счётчик ссылок уменьшается на единицу.


 
Германн ©   (2015-03-24 02:16) [5]

А блин. Не заметил var а :String[24]
Дык в этом случае не может быть никакой речи об "освобождении памяти". Память под String[24] выделена навечно. Вплоть до закрытия приложения.


 
KilkennyCat ©   (2015-03-24 03:57) [6]


> Германн ©   (24.03.15 02:16) [5]

именно поэтому некорректно и неоднозначно говорить о присвоении переменной пустого значения как об освобождении памяти.
да и вообще, в моем случае одно, у кгшзх другое, а автора ваще создание объекта, со своими методами и т.д., где вдруг уничтожение объекта требует внешних действий внутри объекта.


 
кгшзх ©   (2015-03-24 08:29) [7]

автор думает, что если стринг это просто переменная то все в порядке.
а если сделать поле класса типа стринг, то компилятор типа тупой и не заметит что ему надо подсчитывать ссылки и на этот стринг.

хотя разницы никакой нет абсолютно.


 
имя   (2015-10-20 19:32) [8]

Удалено модератором



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

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

Наверх





Память: 0.46 MB
Время: 0.002 c
15-1463757911
SergP
2016-05-20 18:25
2017.08.13
Как вы относитесь к использованию меток в Delphi?


2-1427136740
NovichoK2
2015-03-23 21:52
2017.08.13
освобождение строковых параметров класса


2-1443091187
Andrey K
2015-09-24 13:39
2017.08.13
Как заблокировать клавишу?


15-1464384606
Юрий
2016-05-28 00:30
2017.08.13
С днем рождения ! 28 мая 2016 суббота


2-1422502870
Drowsy
2015-01-29 06:41
2017.08.13
Вычисляемые поля ДатаСета.





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