[fpc-pascal] Freeing memory with exceptions

Benito van der Zander benito at benibela.de
Mon May 22 22:37:53 CEST 2023


Hi,

>
> The compiler will do this wrapping anyway if you use ansistrings, so the
> approach with e.g. a generic record will not cause a lot of overhead 
> in most
> cases. 

But using strings or anything similar causes a lot of overhead

It is really bad



Bye,
Benito
On 21.05.23 18:03, Michael Van Canneyt via fpc-pascal wrote:
>
>
> On Sun, 21 May 2023, Hairy Pixels via fpc-pascal wrote:
>
>>
>>
>>> 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. :)
>
> They're used all over the place in the RTL and FCL, so you better take 
> them
> into account.
>
> The compiler will do this wrapping anyway if you use ansistrings, so the
> approach with e.g. a generic record will not cause a lot of overhead 
> in most
> cases.
>
> Michael.
> _______________________________________________
> fpc-pascal maillist  - fpc-pascal at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20230522/a8dccfff/attachment.htm>


More information about the fpc-pascal mailing list