Форум: "Начинающим";
Текущий архив: 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