Masks.pas文件名匹配单元,会引起内存泄漏,如何修正?(100)

  • 主题发起人 主题发起人 lian888
  • 开始时间 开始时间
L

lian888

Unregistered / Unconfirmed
GUEST, unregistred user!
Masks.pas中调用了MatchesMask函数多次后,内存会往上涨,应该里面的某句代码写的问题,如何修改呢?
 
function MatchesMask(const Filename, Mask: string): Boolean;var CMask: TMask;begin CMask := TMask.Create(Mask); try Result := CMask.Matches(Filename); finally CMask.Free; end;end;constructor TMask.Create(const MaskValue: string);var A: array[0..0] of TMaskState;begin FSize := InitMaskStates(MaskValue, A); FMask := AllocMem(FSize * SizeOf(TMaskState));////分配内存 InitMaskStates(MaskValue, Slice(PMaskStateArray(FMask)^, FSize));end;定义一个全局的TMask实例,每次使用的时候不要再重复创建这个TMask对象
 
请大家帮忙
 
不是用try...finally...end保护起来了吗?这段代码应当不会引起泄露吧
 
后退
顶部