【发布时间】:2015-07-17 04:44:06
【问题描述】:
拖放后出现内存泄漏错误。
TMyDragObject = class(TDragObject)
public
MyInfo : string;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
System.ReportMemoryLeaksOnShutdown := True;
Button1.DragMode := dmAutomatic;
end;
procedure TForm1.Button1StartDrag(Sender: TObject; var DragObject: TDragObject);
begin
DragObject := TMyDragObject.Create;
TMyDragObject(DragObject).MyInfo := 'hi!';
end;
DragObject 应该在哪里被释放? 谢谢大家。
【问题讨论】:
-
既然您在
OnStartDrag中创建它,那么在OnEndDrag中释放它不是一个合乎逻辑的地方吗? -
当然,但它从未被解雇。有什么遗漏吗?
-
您的
OnDragDrop和OnDragOver的代码在哪里用于接受拖动操作的控件? -
它们不相关,不接受拖放操作也会发生内存泄漏。
-
从
TDragObjectEx继承你的TMyDragObject,这样它会在拖动操作结束时自动释放。
标签: delphi memory-management memory-leaks drag-and-drop drag