ファクトリを使用してオブジェクトを構築するプロジェクトに取り組んでいます。ファクトリ関数へのポインターを vars にグローバルに保持し (悪いことはわかっています)、初期化時に登録します。
私は最近、プロジェクトにメモリ リークがあるかどうかを知りたいと思っていたので、FastMM4 をダウンロードして調べてみることにしました。修正できるいくつかのエラーが発生しましたが、少し困惑しているのは、以下のコードに示すように、ファクトリに関連するメモリを解放していないようです。小さなメモリ リークが発生しています。ばかげていませんが、それでも迷惑です。
メモリを解放するために何を使用しますか (そうである場合)、dispose(@factoryfunction) を試しましたが、すべてを台無しにしているようです。私は低レベルのポインターが苦手で、いつも混乱してしまうので、誰かがそれを助けてくれれば、それは素晴らしいことです.
以下に、私が抱えている問題を説明する頭のてっぺんから書き留めた例を含めました。
乾杯、
バリー
unit Test;
interface
uses classes;
type
TAFactoryFunction = reference to function (const aType : integer): TObject;
function testfunction (const aType : integer) : TObject;
implementation
function testfunction(const aType: integer) : TObject;
begin
result := TObject.Create;
end;
var
FactoryFunction : TAFactoryFunction
initialization
FactoryFunction := testfunction;
finalization
// possibly some freemem code here?
end.