我正在使用 Delphi 2009 并使用以下代码段得到一些奇怪的错误:
var
Str : AnsiString;
CharPtr : PAnsiChar;
...
CharPtr := PAnsiChar (Str);
ExecuteInBackgroundThread (
procedure
begin
DoSomething (CharPtr);
end);
我猜想当超出范围并且在某些时间条件下 DoSomething 会产生最奇怪的结果时,字符串会被破坏。所以第一个问题是:我说的对吗?
第二个问题是:如何规避被破坏的字符串?这样做的正确方法是什么?
提前致谢。