On Thu, Oct 29, 2009 at 14:00, Graeme Geldenhuys <graemeg.li...@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); > end; >
No, you don't create memory leak. But your code neither works, because s is local to AppendText, and PChar(s) becomes void after call to AppendText - memory used by s will be deallocated, and since PChar(s) = @s[1] Text would be invalid pointer. You will either need to convert Text to SomeString, or do manual (de)allocation. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal