[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