When an exception is thrown and no matching handler can be found for it, C++ invokes the function terminate(). By default, terminates invokes the function abort(). Some compilers guarantee that at this point, the stack has been unwound, i.e., all local automatic objects have been fully destructed, streams have been flushed, and open files have been closed. Other compilers don’t unwind the stack in this case. In other words, whether the stack is unwound in the case of an uncaught exception is platform-defined. Therefore, you should check your compiler’s documentation to know how it behaves in the event of an uncaught exception.