C++ Runtime Now

: The stack is unwound again. For each frame between the throw site and the catch frame, the personality routine calls destructors for local objects ( _UA_CLEANUP_PHASE ). Finally, control jumps to the catch block.

When dynamic_cast<B*>(a_ptr) is performed, the runtime reads the vtable of the object to obtain the type_info of the most derived type and checks if it derives from B . c++ runtime

must return a pointer to the start of the most derived object. The runtime computes this by following a “offset to top” field stored in the vtable. : The stack is unwound again