私のコードでは、さまざまな場所で作成された小さなデータ保存クラスを使用しています。メモリリークを回避し、物事を単純化するために、参照カウントを使用したいので、
type TFileInfo = class (TInterfacedObject, IInterface)
TFileInfo.Freeへの手動呼び出しをすべて削除しました。残念ながら、Delphiは多くのメモリリークを報告しました。SOで検索すると、これが機能しない理由を説明する次の質問が見つかりました。
TInterfacedObjectガベージの子孫が収集されないのはなぜですか?
そこに回避策が示されていますが、(少なくとも正しく理解できれば)カスタムインターフェイスIFileInfoを作成し、多くのゲッターとセッターを提供する必要があります。これは避けたいものです。
編集私は、create FileInfoオブジェクトを2つの異なる種類のハッシュテーブルに挿入することを追加する必要があります。1つはTBucketListから派生し、もう1つはCodegearフォーラムのハッシュマップ実装です。内部的には両方ともユーザーポインタであるため、状況は他の質問と同じです。
Delphiのオブジェクトに参照カウントを使用させる他の可能性はありますか?