内存泄漏能达到多大程度?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我多次遇到内存泄漏。 通常,当我像没有明天的mallocing一样,或者悬挂FILE 就像脏衣服一样。至少在程序终止时清除所有内存。 当程序终止或崩溃时,是否有泄漏内存不会被收集的情况? 如果答案从语言到语言的差异很大,那么让我们关注C(++)。

提问于
用户回答回答于

没有。当进程退出时,操作系统释放所有由进程持有的资源。

这适用于操作系统维护的所有资源:内存、打开的文件、网络连接、窗口句柄.

也就是说,如果程序运行在没有操作系统的嵌入式系统上,或者运行在非常简单或错误的操作系统上,那么在重新启动之前,内存可能无法使用。但如果你处于这种情况下,你可能不会问这个问题。

操作系统可能需要很长时间才能释放某些资源。例如,网络服务器用于接受连接的TCP端口可能需要几分钟才能空闲,即使程序正确地关闭了它。网络程序也可以容纳远距离数据库对象等资源。当网络连接丢失时,远程系统应该释放这些资源,但它可能比本地操作系统还要长。

用户回答回答于

C标准没有指定由malloc在程序终止时释放。这是由操作系统完成的,并不是所有的操作系统(通常是嵌入式世界中的操作系统)在程序终止时释放内存。

扫码关注云+社区