Is it because:- The GC did decide to run and cleanup memory straight after the call to s.destroy() - An object being in an invalid state means the program segfaults when the object is used ?- Another reason..
All methods are virtual by default.My guess would be that the invalid state implies that the virtual table pointer is not valid anymore, hence the crash.