S
sonie
Unregistered / Unconfirmed
GUEST, unregistred user!
to xiao.lit:
有道理,delphi有自动管理内存的机制,不同于C++builder,在一个实体作用域结束时自动析构。
但这里有个问题,以下这段代码:
var
obj1,obj2:TMyobj;
begin
obj1 := TMyObj.Create;
obj2 := TMyobj.Create
obj1 := obj2;
end;
原obj1的值变成了指向obj2的地址,原obj1所指向的对象变得无法访问,不止是用户,就是delphi自己
也无法访问,。dephi会在end时会尝试自动释放obj1,obj2不错,但事实上此时的obj1,obj2指向同一对象,
他无法知道还有一段没有释放的内存其这段空间的其它信息(大小等),也无法去释放它。
其实这也是delphi与c++builder的一个重要差别,但过于依赖这种便利,必然会留下后患。
有道理,delphi有自动管理内存的机制,不同于C++builder,在一个实体作用域结束时自动析构。
但这里有个问题,以下这段代码:
var
obj1,obj2:TMyobj;
begin
obj1 := TMyObj.Create;
obj2 := TMyobj.Create
obj1 := obj2;
end;
原obj1的值变成了指向obj2的地址,原obj1所指向的对象变得无法访问,不止是用户,就是delphi自己
也无法访问,。dephi会在end时会尝试自动释放obj1,obj2不错,但事实上此时的obj1,obj2指向同一对象,
他无法知道还有一段没有释放的内存其这段空间的其它信息(大小等),也无法去释放它。
其实这也是delphi与c++builder的一个重要差别,但过于依赖这种便利,必然会留下后患。