我多次遇到内存泄漏。通常当我在 malloc
-ing 就像没有明天一样,或者像脏衣服一样晃来晃去 FILE *
s。我通常假设(阅读:绝望地希望)至少在程序终止时所有内存都被清理了。是否存在程序终止或崩溃时无法收集泄漏内存的情况?
如果答案因语言而异,那么让我们关注 C(++)。
请注意短语的双曲用法,“就像没有明天”和“悬空......就像脏衣服一样”。不安全* malloc
*ing 会伤害您所爱的人。此外,请谨慎使用脏衣服。
最佳答案
没有。操作系统在进程退出时释放进程持有的所有资源。
这适用于操作系统维护的所有资源:内存、打开的文件、网络连接、窗口句柄...
也就是说,如果程序在没有操作系统的嵌入式系统上运行,或者在非常简单或有问题的操作系统上运行,则内存可能在重新启动之前无法使用。但如果你处于那种情况下,你可能不会问这个问题。
操作系统可能需要很长时间才能释放某些资源。例如,网络服务器用来接受连接的 TCP 端口可能需要几分钟才能空闲,即使被程序正确关闭。网络程序也可能拥有远程资源,例如数据库对象。当网络连接丢失时,远程系统应该释放这些资源,但它可能需要比本地操作系统更长的时间。
关于c++ - 内存泄漏能走多远?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467298/