假设我的Delphi类看起来像这样:
- interface
- type
- TMySubInfo = class
- public
- Name : string;
- Date : TDateTime;
- Age : Integer;
- end;
- TMyInfo = class
- public
- Name : string;
- SubInfo : array of TMySubInfo;
- destructor Destroy; override;
- end;
- implementation
- destructor TMyInfo.Destroy;
- begin
- // hmmm..
- end;
- end.
要正确清理,析构函数应该怎么办?是否足够做SetLength(SubInfo,0),还是需要循环并释放每个TMySubInfo?我需要做任何事情吗?
解决方法
您需要循环并释放每个创建的对象.
您必须知道,声明一个TMySubInfo数组实际上并不创建对象.你以后要创建它们.
我会使用一个TList代替更有活力的方法.甚至可以使用TObjectList,当该列表被释放时,它可以释放所有的项目.