<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Am 19.04.2013 06:36, schrieb Xiangrong
Fang:<br>
</div>
<blockquote
cite="mid:CAP93jB3QeS+Uczbg2JeAtXj+257MmwZzu_Xa_MbWQwirD0Xtwg@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>
<div><span style="font-family:courier new,monospace">Hi All,<br>
<br>
</span></div>
<span style="font-family:courier new,monospace">I'm studying
how pascal manages strings. I wrote a simple test program:<br>
<br>
program stringtest;<br>
{$mode objfpc}{$H+}<br>
uses Classes, sysutils;<br>
function test: PString;<br>
var<br>
s : string;<br>
begin<br>
New(Result);<br>
Result^ := FloatToStr(Random);<br>
</span></div>
<span style="font-family:courier new,monospace">// s :=
FloatToStr(Random);<br>
</span>
<div><span style="font-family:courier new,monospace">// Result
:= @s;<br>
end;<br>
var<br>
i : Integer;<br>
begin<br>
Randomize;<br>
with TList.Create do try<br>
for i := 0 to 9 do Add(test);<br>
for i := 0 to Count - 1 do begin<br>
WriteLn(PString(Items[i])^);<br>
end;<br>
finally<br>
Free;<br>
end;<br>
end. <br>
<br>
</span></div>
<div><span style="font-family:courier new,monospace">The program
runs fine, but:<br>
<br>
</span></div>
<div><span style="font-family:courier new,monospace">1. I don't
know whether I have to MANUALLY free memory for these
strings to prevent leak?<br>
</span></div>
</div>
</blockquote>
<br>
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.<br>
<br>
Regards,<br>
Sven<br>
</body>
</html>