如果我宣布
PSomeStruct = ^TSomeStruct;
TSomeStruct = record
s1 : string;
end;
然后我运行以下代码:
var
p: PSomeStruct;
begin
new(p);
p^.s1:= 'something bla bla bla';
dispose(p);
FastMM 4内存管理器报告存在内存泄漏(类型:字符串,数据转储:“bla bla bla bla”).但是,如果我在调用dispose之前将s1字符串设置为空,那就没问题.
我找到的第二种方法是从记录类型更改为类,然后不是新的我正在创建实例,而不是dispose我正在调用instance.Free().它无需手动清洁琴弦即可工作.
当我调用dispose时,有没有办法让Delphi自动清理我的字符串?
最佳答案 FastMM是你的.dpr中使用的第一个单元吗?否则它可能太早确定,报告错误的记忆泄漏.
这个简化的代码示例是否也会产生与使用JvSimpleXML时相同的内存泄漏?如果不是,那么你可能还会有更多的事情发生.
在我看来:当FastMM报告内存泄漏时,存在内存泄漏.