Z
ZXW49362727
Unregistered / Unconfirmed
GUEST, unregistred user!
请看以下代码:
var
Strings: TStringList;
<1>: Strings:= nil;
Strings.Free
//为何以上代码运行不会出错?如果Free方法确实调用了,那么它保存在内存哪里呢?
<2>: Strings:= TStringsList.Create;
Strings.Free;
Strings.Free;
//出错。如果上面那个问题解决的话,这个问题也解决了。
Strings:= TStringsList.Create;
Strings.Free;
Strings:= nil;
Strings.Free;
Free的VCL源码如下:
if Self<>nil then
Destory;
确实,如果String=nil 时,不会调用Destory所以不出错。
但问题是Free不是一个静态方法,在没在调用Create的时候,Free方法的代码保存在哪呢?
请高手指教。
var
Strings: TStringList;
<1>: Strings:= nil;
Strings.Free
//为何以上代码运行不会出错?如果Free方法确实调用了,那么它保存在内存哪里呢?
<2>: Strings:= TStringsList.Create;
Strings.Free;
Strings.Free;
//出错。如果上面那个问题解决的话,这个问题也解决了。
Strings:= TStringsList.Create;
Strings.Free;
Strings:= nil;
Strings.Free;
Free的VCL源码如下:
if Self<>nil then
Destory;
确实,如果String=nil 时,不会调用Destory所以不出错。
但问题是Free不是一个静态方法,在没在调用Create的时候,Free方法的代码保存在哪呢?
请高手指教。