我发现了一个非常非常奇怪的行为,我从未见过。 我正在处理一个复杂的VS2005 C++项目。当抛出异常时,析构函数没有执行(没有堆栈展开)
class Tester
{
public:
Tester()
{
TRACE("Construct Tester");
}
~Tester()
{
TRACE("~Destruct Tester");
}
};
void Thrower()
{
Tester X;
throw std::exception("Booom");
}
当调用Thrower()
时,您期望在跟踪输出中看到什么? 测试器是否构建并在堆栈展开时被破坏?
至少我认为,但测试人员的析构函数从来没有被调用!
不可能!!!?!?!
这是Visual Studio中的错误吗?
我搜索了很多,但没有在Stackoverflow上找到答案。
如果这是Visual Studio中的一个错误,那么应该在互联网上有任何信息。但我找不到任何东西。但是,也许你是对的。 – Elmue