Ida*_*dan 3 c++ exception stack-unwinding
我听说有人说因为堆栈展开,异常处理有点贵.
我没有得到什么,无论我抛出异常以及是否使用"return",都会发生堆栈展开.那么区别在哪里?
例如,如果我遇到无法处理的内存问题 - 唯一的选择是停止该功能,直到我到达应该处理或通知问题的区域.那么抛出异常的另一个选择是什么?
我可以使用"return"而不是抛出异常,但那时它是一样的.我知道堆栈展开甚至可以返回六个堆栈,但所以检查返回值和"返回"组合.
欢迎解释.
小智 7
当您使用返回时,无条件地"展开"堆栈,这在概念上可以像执行单个"ret"机器代码指令一样简单.在异常情况下,堆栈展开必须搜索合适的异常处理程序,这是一项复杂得多的任务.异常路径还具有构造并可能复制异常对象的任务,这可能不是微不足道的.