簡體   English   中英

德爾福內存問題(FastMM4)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM