[fpc-pascal] Freeing memory with exceptions

Hairy Pixels genericptr at gmail.com
Sun May 21 16:30:22 CEST 2023



> On May 21, 2023, at 2:47 PM, Michael Van Canneyt via fpc-pascal <fpc-pascal at lists.freepascal.org> wrote:
> 
> Your example will leak memory in any case, even if there is no exception,
> since you're not freeing the object anywhere..

doh, dumb example on my behalf.

> 
> Assuming the result of A is not used outside of Test, the following is the
> only solution:
> 
> procedure Test;
> 
> var
> A : TObject;
> begin
>  A:=TObject.Create;
>  Try
>    // call some code in other unit which raise an exception
>    DoThis;
>  finally
>    A.Free
>  end;
> end;
> 
> You can try to use interfaces, they will be managed by the compiler.

This is what I was worried about, wrapping all functions or needing full ARC on all types. Very risk to opt in to this design I would say. I remain not a fan of exceptions. :)

Regards,
Ryan Joseph



More information about the fpc-pascal mailing list