t1,t2 :Tsomeclass;
t1 :=Tsomeclass.create;
...
t2 :=t1;t2和t1使用同一内存,在free时会出现一些问题。比如说t2.free,然后...t1.free。
请问怎样保证free正确?还有怎样将其赋值相同但不是同一内存。
t1 :=Tsomeclass.create;
...
t2 :=t1;t2和t1使用同一内存,在free时会出现一些问题。比如说t2.free,然后...t1.free。
请问怎样保证free正确?还有怎样将其赋值相同但不是同一内存。
t1 :=Tsomeclass.create;
t2 :=Tsomeclass.create;...t2 .Assign(t1);
楼上的方法不错啊
ISomeIntf=interface
..TSomeClass=class(tobject,ISomeIntf)
...var
t1,t2:ISomeIntf
begin
t1:=TSomeClass.Create();
t2:=t1;//这时interface会增加引用计数
//使用完后不需要自己释放t1,delphi会自动判断t1的引用计数为0时才释放。
...
end;
t1.free;
if assigned(t2) then
t2.free;
这样就好了