Rei*_*ica 8 operating-system memory-management
这个问题让我很好奇.像这样的问题总能得到答案,"它通常是安全的,但你不应该假设操作系统会为你做这个",这听起来对我很好,但我想知道:有没有积极开发(发布)操作系统不这样做?
这是在恐龙时代(80年代)被修复的东西吗?
sel*_*bie 10
简短的回答是"无".甚至几年前在DOS上的程序也会在程序终止时释放内存(简单地说,当程序停止时没有任何东西可以管理内存).我敢肯定有人可能会看到内核模式代码不一定在app退出时释放它的内存,或者他们可能会引用一些模糊的嵌入式操作系统....但你可以假设app-exit返回你的用户模式代码所获得的所有内存.(Windows 3.x可能遇到此问题,具体取决于使用的分配器...)
你应该"释放你的记忆"的原因在于,对于大规模软件工程,你应该努力开发灵活使用的组件,因为你永远不知道其他人将如何改变代码的使用时间你离开球队之后.
想想这样.假设您设计了一些设计为单例的类(仅在应用程序生命周期内实例化一次).因此,当组件破坏或最终确定时,您决定不打扰内存清理.对那一刻来说,这是一个非常好的决定.多年以后,在你离开绿色牧场后,其他人可能会出现并决定他们需要在多个地方使用你的课程,这样很多实例会在应用程序生命周期中来来往往.你的内存泄漏将成为他们的问题.
在我的团队中,我们经常谈到让用户启动"关闭"应用程序只是exit()而不进行任何清理.如果我们这样做,我仍然会强制团队开发自己正确清理的类和组件.