德尔福内存问题(FastMM4)

时间:2011-09-29 16:07:58

标签: delphi memory-leaks global-variables factory fastmm

使用工厂构建对象的项目。我在全局的vars中保留了工厂函数的指针(我知道不好)并在初始化时注册它们。

我最近有兴趣看看项目是否有内存泄漏,所以决定下载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.

1 个答案:

答案 0 :(得分:5)

我刚刚在Delphi 2010中对此进行了测试,这似乎是一个错误。编译器应该生成代码来清理它,但事实并非如此。即使像大卫建议的那样写FactoryFunction := nil也行不通。

您应该在QC中将此报告为错误。