Delphi 返回局部String类型变量的字符串指针有关问题

Delphi 返回局部String类型变量的字符串指针问题
我是Delphi语言的一个新手,最近在使用Pascal语言上遇到点困惑,请高人指教。
在代码中定义一个函数,返回局部String变量对应的字符串地址:
function RetChar: PChar;
var
  str: String;
begin
  str := 'Hello, world!';
  result := PChar(str);
end;

然后在Button的OnClick事件中调用:
procedure TForm1.Button13Click(Sender: TObject);
var
  pStr:PChar;
  tmp:String;
begin
  pStr := RetChar;
  tmp := pStr ;
  ShowMessage(tmp);
end;
竟然运行正常,按理说返回局部String变量的字符串指针后,String变量的引用计数变为0,String变量内部字符串所占内存会被回收,为什么这样竟然能运行成功呢?

------解决方案--------------------
因为该地址没有被占用.
------解决方案--------------------

  //上面应该改为:
  ShowMessage(Format('长度为:%d',[PI^]));
  Dec(PI);
  ShowMessage(Format('引用计数为:%d',[PI^]));

“类型于”打错,应该是“类似于”