Am 19.04.2013 06:36, schrieb Xiangrong Fang:
Hi All,I'm studying how pascal manages strings. I wrote a simple test program: program stringtest; {$mode objfpc}{$H+} uses Classes, sysutils; function test: PString; var s : string; begin New(Result); Result^ := FloatToStr(Random); // s := FloatToStr(Random); // Result := @s; end; var i : Integer; begin Randomize; with TList.Create do try for i := 0 to 9 do Add(test); for i := 0 to Count - 1 do begin WriteLn(PString(Items[i])^); end; finally Free; end; end. The program runs fine, but:1. I don't know whether I have to MANUALLY free memory for these strings to prevent leak?
The string types "String" (in mode $H+), "AnsiString" and "UnicodeString" are managed by the compiler/RTL. If you use a pointer type then you need to manage it yourself, thus you need to free the PString manually in this case.
Regards, Sven
_______________________________________________ fpc-pascal maillist - [email protected] http://lists.freepascal.org/mailman/listinfo/fpc-pascal
