Bar*_*rry 7 delphi memory-leaks factory global-variables fastmm
处理使用工厂构建对象的项目.我保持指向全局变量中的工厂函数的指针(我知道不好)并在初始化时注册它们.
我最近有兴趣看看项目是否有内存泄漏,所以决定下载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.
Run Code Online (Sandbox Code Playgroud)
我刚刚在Delphi 2010中对此进行了测试,这似乎是一个错误.编译器应该生成代码来清理它,但事实并非如此.FactoryFunction := nil正如大卫所说,即使写作也不行.
您应该在QC中将此报告为错误.