退出时未在 c++ 中"cleaned up"库时会发生什么情况



我正在运行linux,只是想知道库的代码在进程死亡后到底发生了什么,而不是通过在它们上运行终止函数或类似的东西来"清理"。我见过有人在退出函数上实现特定的清理,而其他人没有这样做。

这取决于您希望进行什么清理。库打开的所有本地操作系统资源(内存、打开的文件/套接字等)将被关闭/释放。即使您不调用相关的清理函数(free/delete, fclose/close等),也会发生这种情况。

但是,非操作系统资源(例如在服务器上启动的事务)将不会被自动清除。这是因为操作系统不可能知道在这种情况下该做什么。编写良好的服务器将优雅地处理这些情况。

此外,如果程序正常退出,库可以"隐藏"某些清理函数。

这要看……

…关于资源类型

释放文件描述符。(然而,操作系统为您关闭它们。)

关闭缓存的文件和db连接。但是,标准输出缓冲区将在exit(3)main()返回时刷新。

但不要在退出前释放分配的内存。这是对时间的巨大浪费,并且可能导致回读那些永远不会使用的页面。

相关内容

  • 没有找到相关文章

最新更新