gpt4 book ai didi

Delphi - 结构的字符串没有被释放 [FastMM 管理器]

转载 作者:行者123 更新时间:2023-12-03 15:34:30 26 4
gpt4 key购买 nike

如果我声明

PSomeStruct = ^TSomeStruct;
TSomeStruct = record
s1 : string;
end;

我运行以下代码:

var
p: PSomeStruct;
begin
new(p);
p^.s1:= 'something bla bla bla';
dispose(p);

FastMM 4 内存管理器报告存在内存泄漏(类型:字符串,数据转储:“something bla bla bla”)。但是,如果我在调用 dispose 之前将 s1 字符串设置为空,那就没问题了。

我发现的第二种方法是从记录类型更改为类,然后我创建实例而不是 new ,而不是 dispose 我正在调用instance.Free()。它无需手动清洁琴弦即可工作。

有没有办法让 Delphi 在我调用 dispose 时自动清理我的字符串?

最佳答案

FastMM 是您的 .dpr 中使用的第一个单位吗?否则它可能会过早完成,报告错误的内存泄漏。

这个简化的代码示例是否也会产生与使用 JvSimpleXML 时相同的内存泄漏?如果不是,可能发生的事情比您怀疑的还要多。

我认为:当FastMM报告内存泄漏时,就存在内存泄漏。

关于Delphi - 结构的字符串没有被释放 [FastMM 管理器],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1202544/

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