[fpc-pascal] Freeing memory with exceptions
genericptr at gmail.com
Sun May 21 03:09:43 CEST 2023
I've never really used exceptions myself in Pascal (with the exception of breaking out of deeply recursive function calls) so I don't know all the rules.
In this example lets say you call Test() which allocates some memory and then calls out to another function in another unit which raises (the programmer doesn't know this because FPC doesn't mark the function as throwing exceptions). Now the Test() function will exit early before freeing the memory.
What are you supposed to do here? The only thing I can think of is to wrap every function in try..finally which COULD raise an exception but that's a huge mess because literally any function could raise.
// call some code in other unit which raise an exception
writeln('failed'); // TObject now leaks
More information about the fpc-pascal