我的一位同事向我展示了一个用 Delphi-XE XE 版本 15.0.3953.35171 编写的代码,我认为它应该会引发访问冲突。代码如下:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm3 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
function test:TstringList;
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.FormCreate(Sender: TObject);
var aStrList : TStringList;
begin
aStrList := TStringList.Create;
test;
FreeAndNil(aStrList);
end;
function TForm3.test: TstringList;
var i:Integer;
begin
for i:=0 to 1000 do
Result.Add('aaa');//AV?
end;
end.
检查 aStrList 和 Result 有以下结果:
aStrList: TStringList $12FEDC : $42138A
Result: TStringList $12FEC4 : $B01B90
我不明白它为什么起作用。Result.Add 应该引发访问冲突
LE:它似乎只适用于调试构建配置。