gpt4 book ai didi

Delphi 内存问题 (FastMM4)

转载 作者:行者123 更新时间:2023-12-03 14:53:48 25 4
gpt4 key购买 nike

正在开发一个使用工厂来构造对象的项目。我将工厂函数的指针保存在全局变量中(我知道这很糟糕),并在初始化时注册它们。

我最近想看看该项目是否存在内存泄漏,因此决定下载 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.

最佳答案

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

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

关于Delphi 内存问题 (FastMM4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7600206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com