[fpc-pascal] PChar -> AnsiString -> PChar = memory leak?

Henry Vermaak henry.vermaak at gmail.com
Thu Oct 29 14:20:42 CET 2009


2009/10/29 Mattias Gaertner <nc-gaertnma at netcologne.de>:
> On Thu, 29 Oct 2009 15:00:53 +0200
> Graeme Geldenhuys <graemeg.lists at gmail.com> wrote:
>
>> Hi,
>>
>> Do I create a memory leak if I cast a PChar it a AnsiString. Then
>> append text to the AnsiString and then cast it back to the original
>> PChar?
>>
>> eg:
>> var
>>   Text: Pchar;    <-- global var containing text.
>>
>> procedure AppendText(const AText: string);
>> var
>>   s: string;
>> begin
>>   s := Text + AText;
>>   Text := PChar(s);
>
> Text:=strnew(PChar(s));

Won't this leak?  You'll have to initialise text to null, then use
strdispose before strnew if text is not null.

Henry



More information about the fpc-pascal mailing list