对象生存期的小问题 ( 积分: 20 )

  • 主题发起人 主题发起人 飞天大侠
  • 开始时间 开始时间

飞天大侠

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure Tfrm_user.OrderGrid(DataSet: TclientDataset; orderField: String);
var
i:integer;
begin
....
end;
参数DataSet是局部对象,过程执行完后是否就自动销毁了??不销毁的话生存期什么时候结束?问题比较简单,想听听大家的意见.
 
TclientDataset实际上是个指针
DataSet只是一个指针的副本
 
没人知道么?想听听高手的解释!!/
 
楼上的楼上是正确的
调用你这个方法时,把Self对象的地址存在EAX中,把DataSet的地址存在ECX中,把orderField复制到另外一个堆空间,然后把他的地址存在EDX中,然后call OrderGrid的代码段,传过来的都是地址,所以OrderGrid跟本不会管DataSet的生存期而只会在完成之后释放orderField的空间(string中在Delphi中比较特殊,但不知道是不是这样搞的,纯属猜测)
 
需要确切的答案
 
后退
顶部