0

在发现我们有一些基本的内存泄漏之后,我一直在对我们的一些应用程序进行一次大扫除。将 FastMM4 插入我们的一个应用程序后,我收到一个抽象错误,似乎是在我清除帧列表时

我有一个带有滚动框的表格。滚动框有结果列表或详细信息列表。结果和细节都设计在框架中。

首先,我得到一批结果(最多 25 条记录)并创建适当的帧数

var
  Framelist: TList;
  NewSF: TSF;
begin
  Framelist := TList.Create;
  for i := 0 to Batch.Count - 1 do
  begin
    NewSF := TSF.Create(nil);
    NewSF.Name := 'SF' + IntToStr(i);
    NewSF.Parent := ScrollBox1;
    FrameList.Add(NewSF);
  end;
end;

当点击一个框架时,结果框架是清晰的,并且在滚动框上创建了一个详细框架。我目前已停用详细信息框架的创建,并专注于清除框架。

帧最初是这样清除的:

while FrameList.Count > 0 do
begin
  TSF(FrameList[0]).free;
  FrameList.delete(0);
end;

我也试过这样:

for i := 0 to FrameList.Count - 1 do
begin
  SF := FrameList[i];
  SF.Free;
  SF := nil;
end;

关于我做错了什么的任何建议 - 无论是关于创造还是毁灭?

4

0 回答 0