我的程序有以下代码:
function FooBar(const s: string): string;
var
sa: AnsiString;
begin
// ..........................
sa := AnsiString(s);
sa := AnsiString(StringReplace(string(sa), '*', '=', [rfReplaceAll]));
sa := AnsiString(StringReplace(string(sa), ' ', '+', [rfReplaceAll]));
result := string(sa);
// ..........................
end;
我注意到程序在某处崩溃,FastMM4报告说我已经写入了一个被释放的对象。一旦我注释掉“const”,程序就能工作了。
我已经阅读了Delphi文档关于const参数的内容,但我无法理解为什么const参数会导致程序崩溃。我很想了解其中的原因。
更新:该程序只在Delphi 6中崩溃,并且仅在开启优化时才会发生。如果关闭优化,则程序将正常工作。这可能是Delphi的一个bug吗?
Result:=AnsiString(s);Result:=AnsiString(StringReplace(string(Result),
...`? - Stijn Sanders