文档目录
RTTI 与异常处理底层机制
目标:理解运行时类型识别和异常抛出的物理开销。
-
4.1
dynamic_cast底层原理type_info链与 vtable 中的__si_class_type_info/__class_type_info结构。dynamic_cast<void*>如何获取对象的起始地址。- 跨动态库边界
dynamic_cast的限制与解决方案。
-
4.2
typeid运算符typeid返回的std::type_info对象的静态/动态绑定区别。- 对空指针解引用
typeid(*ptr)的行为(抛出std::bad_typeid)。
-
4.3 异常抛出的物理成本
- 为什么零成本异常模型(Zero-Cost Exception Handling)在没有异常抛出时无开销,但抛出时极慢?
setjmp/longjmpvs C++try/catch的底层差异。