这个问题让我很好奇。像这样的问题总是得到诸如“它通常是安全的,但你不应该假设操作系统会为你做这件事”这样的答案,这对我来说听起来是个好建议,但我想知道:是否有任何积极开发(发布)的不执行此操作的操作系统?
这是恐龙时代(80年代)就被修复的东西吗?
简短的回答是“没有”。即使是几年前 DOS 上的程序也会在程序终止时释放内存(仅仅是因为程序停止时没有任何东西管理内存)。我确信有人可能会看到内核模式代码不一定在应用程序退出时释放其内存,或者他们可能会引用一些晦涩的嵌入式操作系统......但您可以假设应用程序退出返回您的用户模式代码获取的所有内存。 (Windows 3.x 可能会遇到此问题,具体取决于使用的分配器...)
“应该释放你的内存”这一美德的原因是,对于大规模软件工程,你应该努力开发使用灵活的组件,因为你永远不知道别人会如何长期改变你的代码的使用当你离开团队后。
这样想吧。假设您设计了一些被设计为单例的类(在应用程序生命周期内仅实例化一次)。因此,当您的组件破坏或完成时,您决定不进行内存清理。对于当时来说,这是一个非常正确的决定。几年后,当您离开去寻找更好的牧场后,其他人可能会出现并决定他们需要在多个地方使用您的类,以便在应用程序生命周期中许多实例会来来去去。你的内存泄漏将成为他们的问题。
在我的团队中,我们经常讨论让用户启动应用程序的“关闭”只是 exit() 而不进行任何清理。如果我们这样做,我仍然会强制团队开发能够在自身之后正确清理的类和组件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)