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 - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal