当前位置: 代码迷 >> Delphi >> Delphi 返回局部String类型变量的字符串指针有关问题
  详细解决方案

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

热度:4345   发布时间:2013-02-26 00:00:00.0
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^]));

“类型于”打错,应该是“类似于”
  相关解决方案