Hairy Pixels via fpc-pascal <fpc-pascal@lists.freepascal.org> schrieb am Do., 25. Mai 2023, 04:26:
> > > > On May 24, 2023, at 10:11 PM, Sven Barth via fpc-pascal < > fpc-pascal@lists.freepascal.org> wrote: > > > > You must have $H+ on and those are AnsiStrings? Why is there exception > handling involved with AnsiString? I guess it needs this just in case an > exception is thrown somewhere in the call stack? > > > > Because Ansi- and UnicodeString are managed types. *All* managed types > managed string types, interfaces, Variants, managed records) must be > finalized correctly even if an exception occurs. > > > > That's a problem with exceptions then, they are baked into the language > and impose a cost on all managed types now even if we use them or not. Even > disabling the implicit stack frames (forgot what it's called) doesn't get > around this right? > Disabling implicit exception frames does exactly what it says in the tin and removes these automatically generated frames. This however opens you to potential memory leaks if an exception occurs, so one should think twice whether one uses this option. Thankfully it's a local directive, so one can make this choice for every function. But this is what "managed type" *means*: that the compiler and RTL will make sure that it's correctly freed as long as nothing unexpected happens. Regards, Sven >
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal