[fpc-pascal] Memory leak in GetEnumerator
Xiangrong Fang
xrfang at gmail.com
Sat Dec 28 00:07:36 CET 2013
You are right, the bug is fixed, and another bug in the GetEnumerator are
also found and fixed.
This is my first time using heaptrc.
Thanks a lot.
2013/12/27 Jeppe Græsdal Johansen <jeppe at j-software.dk>
> Den 27-12-2013 10:16, Xiangrong Fang skrev:
>
> Hi All,
>
> I used HeapTrc on my TTreap class:
>
> https://github.com/xrfang/fpcollection/blob/master/src/units/treap.pas
>
> It reported memory leak in the following procedure:
>
> function TTreap.GetEnumerator: TTreap;
>
>
> begin
> Result := TTreap.Create; //<-- memory leak here
>
>
> Result.ProxyFor := Self;
>
>
> ... ...
> end;
>
>
> Typical usage of the TTreap enumerator is:
>
> for n in aTreap do begin
>
>
> //do something with n
> end;
>
>
> My question is: will the for-loop automatically free the enumerator
> after usage? How to fix leaks in my ttreap class?
>
> Thanks a lot!
>
> Xiangrong
>
> Your constructor allocates a new NullNode, which gets overwritten in
> GetEnumerator, and hence the enumerator NullNode is never freed.
>
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20131228/2abab73f/attachment.html>
More information about the fpc-pascal
mailing list