C++会以相反的顺序自动调用该块中所有局部变量的析构函数,而不管该块是正常退出(控制失败)还是引发异常。

看来stack unwinding一词仅适用于后者。关于销毁局部变量的前一个过程(块的正常导出)如何调用?

最佳答案

当对象“超出范围”时,对象将自动销毁。这可以称为“自动存储回收”,但实际上是指垃圾回收(有几篇论文的名称中带有该短语的术语都表示垃圾回收)。当使用它来确保打开/关闭,锁定/解锁或其他形式的资源获取与适当释放时的正确配对时,则称为Resource Acquisition is Initialization (RAII)的设计模式,鉴于RAII的主要方面,这有点具有讽刺意味。不是资源初始化或获取,而是资源的破坏。

关于c++ - 在C++中通常退出某个块时如何销毁局部变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2605352/

10-12 23:27