ユニットの1つのファイナライズセクションまで追跡したランタイム217エラーが発生します。これはコードです:
finalization
begin
for I:= 0 to CacheList.Count - 1 do
begin
tempRecord := CacheList.Items[I];
for k := 0 to length(tempRecord.details) - 1 do
begin
tempRecord.Details[k].free;
end;
tempRecord.free;
end;
CacheList.Free;
end;
tempRecordは:
Record = class
Details : array of CachedDetails;
key : string;
end;
CachedDetails = class
EDate : TDateTime;
A : Real;
B : Real;
C : Real;
end;
エラーが発生しても、プロセスは完全に正常に実行されます。そして、ファイナライズ全体をコメントアウトするだけでエラーはなくなりますが、明らかにメモリをリークしたくありません。私は不適切にフリーを呼んでいますか?