[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