我發現了一個非常非常奇怪的行爲,我從未見過。 我正在處理一個複雜的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