查了很久终于发现内存泄漏的地方了,是interface不能release内存
//////////////这是一些主要代码///////////
//---定义interface---
IEntity = interface(IInterface);
//---interface的实现类---
TEtyImpl = class(TInterfaceObject, IEntity);
//-----列表类-----
TEtyList = class
private
//该成员是TInterfaceList
m_List : TInterfaceList;
public
//增加到列表
function AddEntity(ety : IEntity) : integer;
//清楚列表
procedure Clear;
end;
///----列表类的方法----
function TEtyList.AddEntity(ety :IEntity) :integer;
begin
result := m_List.Add(ety);
end;
procedure TEtyList.Clear;
var
i : integer;
begin
//问题出在这里,m_List.Clear并没有释放内存。后来我加上以下代码也不行
// for i := 0 to m_List.Count - do
// m_List.Item := nil;
m_List.Clear;
end;
////////////////////主程序///////////////
var
ety1, ety2 : IEntity;
list : TEtyList;
begin
ety1 := TEtyImpl.Create;
//问题出在这里,ety1 := nil并没有释放内存
ety1 := nil;
ety2 := TEtyImpl.Create;
list.AddEntity(ety);
//问题出在这里,m_List.Clear并没有释放内存。
list.Clear;
end;
请问对interface应该如何释放内存呢?