procedure TForm2.SetClick(obj: TObject; EventName: string);
var
  pp : PPropInfo;
  t:TNotifyEvent;
begin
  pp:=GetPropInfo(obj.ClassInfo,EventName);
  if assigned(pp) then begin
    t:=Self_Click;
    SetMethodProp(obj,EventName,TMethod(t));
  end;
end;大家看看这代码,pp使用完后,要不要释放呢?不释放会不会泄漏内存??

解决方案 »

  1.   

    你从没有为pp分配过内存,何来释放,pp: PPropInfo; pp是个指针类型,pp:=GetPropInfo(obj.ClassInfo,EventName); 
    指向了一个地址,这个地址不是你的程序分配的,是编译器创建对象时分配的,你不调用上面这句话,他依然存在。你的程序写成这样也是可以的procedure   TForm2.SetClick(obj:   TObject;   EventName:   string); 
    var t:TNotifyEvent; 
    begin 
      if assigned(GetPropInfo(obj.ClassInfo,EventName)) then 
      begin 
        t := Self_Click; 
        SetMethodProp(obj,EventName,TMethod(t)); 
      end; 
    end;