【发布时间】:2023-03-20 15:28:01
【问题描述】:
如果您检查此链接http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=107 它是这样写的:
“例如,abort() 和 exit() 库函数永远不能在面向对象的环境中使用——即使在调试期间也是如此——因为它们不会在程序终止之前调用对象的析构函数。”
为什么一个调用退出时需要调用析构函数? (既然操作系统保证程序退出时内存会被回收,对吧?)
【问题讨论】:
-
这是一个非常具有误导性的陈述; “OO -> !abort && !exit, (because X)”,当它应该简单地说“X -> !abort && !exit”时。 OO 与该问题完全无关:例如,程序代码很可能在终止前调用清理代码......
-
这也是一种误导,因为
exit确实调用了命名空间范围和本地静态和静态类成员对象的析构函数。
标签: c++