读书人

Delphi 返回局部String类型变量的字符

发布时间: 2013-02-15 15:46:56 作者: rapoo

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^]));

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

读书人网 >.NET

热点推荐