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