【发布时间】:2023-04-04 02:31:01
【问题描述】:
在 c++ 中,我们喜欢在析构函数中做一些事情。但是什么情况下不会调用析构函数呢?
以下情况的示例:
-
exit()在线程中调用 - 未处理的异常并退出
-
TerminateProcess()(在 Windows 中) - 热/冷重启计算机
- 电脑突然断电...
【问题讨论】:
-
当异常未处理时仍会调用析构函数。试图列举您的计算机可能发生灾难性故障的所有原因(从您的程序的角度来看)是徒劳且无用的信息,您仍应继续使用析构函数并继续假设它们将被调用无论如何。
-
@meagar:我相信如果为非处理异常调用析构函数,则它是实现定义的。基本上它归结为:如果进程终止执行,则(显然)不会调用析构函数。我能想到的唯一其他时间是由析构函数引发异常引起的,这几乎从未发生过。哦,还有动态内存。
-
看来他是在依赖构造函数来释放远程资源。嗯....如果您的进程没有响应,也许您应该让远程资源所有者 ping 您的进程并释放。
-
大型强子对撞机创造奇点。
-
@TonyTheLion 不可能有洪水前的洪水。
标签: c++ call destructor