[fpc-pascal] Delegate Interface class does not seem to be referenced counted

Marcos Douglas md at delfire.net
Wed Aug 10 15:41:23 CEST 2016


On Wed, Aug 10, 2016 at 10:04 AM, Tony Whyman
<tony.whyman at mccallumwhyman.com> wrote:
>
> ...
>
> Destroying FMyInterface in the destructor does not make a difference -
> mainly because the TMyClass destructor is not being called anyway.

It should be called, but is not. Strange.
I tried to change the code to not using Application, DoRun, etc but
the result is same.


On Wed, Aug 10, 2016 at 10:14 AM, Tony Whyman
<tony.whyman at mccallumwhyman.com> wrote:> the output is:
>
> ...
>
> Creating TDelegateClass
> Creating TMyClass
> Creating TDelegateClass
> Destroying TDelegateClass
>
> so it is actually worse with both interfaces left dangling
>
> You get the same result with:
>
>    TMyClass = class(TInterfacedObject, IMyInterface)
>    private
>      FMyInterface: IMyInterface; // class type
>      property MyInterface: IMyInterface
>        read FMyInterface implements IMyInterface;
>    public
>      constructor Create(obj: IMyInterface); << The change
>      destructor Destroy; override;
>    end;

Yeah, I saw the same.
I think this is a bug. I not for FPC 3.0. I'm using FPC 2.6.

If no more answers, you should report this in Bugtrack.

I use Interfaces a lot, but not the 'implements' feature.

Best regards,
Marcos Douglas



More information about the fpc-pascal mailing list