[英]Delphi Memory Issue (FastMM4)
處理使用工廠構建對象的項目。 我保持指向全局變量中的工廠函數的指針(我知道不好)並在初始化時注冊它們。
我最近有興趣看看項目是否有內存泄漏,所以決定下載FastMM4並仔細查看。 它提出了一些我可以解決的錯誤,但是這個我有點難以理解,似乎我沒有釋放與工廠相關的內存,如下面的代碼所示,我得到了一個小的內存泄漏。 盡管如此,並不荒謬但令人討厭。
我將用什么來釋放內存(如果是這樣的話)我已經嘗試過處理(@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.
我剛剛在Delphi 2010中對此進行了測試,這似乎是一個錯誤。 編譯器應該生成代碼來清理它,但事實並非如此。 即使像David建議的那樣寫FactoryFunction := nil
也行不通。
您應該在QC中將此報告為錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.