我发现自己处于一种需要立即退出跨平台C++应用程序而不运行析构函数并且不会导致崩溃的情况。我怎样才能做到这一点?立即退出C++应用程序?
exit(0)
运行析构函数;quick_exit(0)
未在VC++中实现;abort()
导致崩溃;_Exit(0)
在VC++中似乎没有实现(或者至少不会出现在MSDN中);_exit(0)
的文档不清楚它是否调用析构函数 - 显然,它在Windows下调用它们。
我相信我可以在非Windows平台下使用quick_exit
,但是我缺乏VC++的解决方案。
澄清(因为人们问为什么我想避免析构函数)这是一个优化方案。我正在处理一个大型应用程序,它处理千兆字节的RAM,以复杂的图形分配,具有多个进程,多个线程,线程安全引用计数,看门狗等。内存管理/资源释放机制经过优化,可以保持应用程序的响应在运行期间使用和/或监视可能的错误(取决于构建标志),但是这些机制在关机过程中显然是过度的,保持CPU非常繁忙数秒钟,耗尽电池等 - 很长时间后,我们确信所有文件描述符/手柄已关闭。这会让用户感到不快,所以我正在尝试如何改进,最好不用重构所有的东西。
呼叫quick_exit
是专门为这种情况设计的,但不支持VC++。所以我正在寻找该平台的替代品。
“没有运行析构函数”:为什么要避免运行析构函数?他们经常做一些非常重要的工作(释放资源)。 – JBL
如果您的C++程序在没有进行任何清理的情况下立即退出,那就是崩溃。 –
您能否解释为什么*您想要这样做的理由?可能有其他解决方案? –