3 ms·
I mean, in case of an abort the kernel generally cleans things up for you :) Not all things, but most things. More exotic panics (like an infinite loop panic o
by Manishearth 10y ago
I mean, in case of an abort the kernel generally cleans things up for you :) Not all things, but most things.
More exotic panics (like an infinite loop panic on a microcontroller) would not call destructors though.
Most panic impls will either unwind (which will call destructors) or abort/exit, so this is usually not a problem.
- steveklabnik 10y agoMemory will get cleaned up, but your destructors aren't gonna get called.
- jstewartmobile 10y agoI'm speaking mostly in terms of recoverable errors where it jumps to a logging section, carries on, but leaks memory.
- Manishearth 10y agoYou'd generally use Result<T> for recoverable errors (which won't have any destructor issues), but in some cases you might put a panic::recover at the event loop level (never seen this being done before, but I can imagine it happening) which catches the panic (only calling destructors up to the catch point -- this is done by the unwind mechanism) and moving on to the next event in the loop.