【发布时间】:2010-11-15 05:03:02
【问题描述】:
如果我声明
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()。它无需手动清理字符串即可工作。
当我调用dispose 时,有没有办法让Delphi 自动清理我的字符串?
【问题讨论】:
标签: delphi string memory-management pointers fastmm