gpt4 book ai didi

memory-management - 哪些操作系统不会在程序退出时释放内存?

转载 作者:行者123 更新时间:2023-12-04 05:59:21 24 4
gpt4 key购买 nike

This question让我很好奇。像这样的问题总是得到诸如“这通常是安全的,但您不应该假设操作系统会为您做这件事”之类的答案,这对我来说听起来是个好建议,但我想知道:是否有任何积极开发的(已发布)不这样做的操作系统?

这是在恐龙时代(80 年代)修复的吗?

最佳答案

简短的回答是“无”。即使是几年前的 DOS 程序也会在程序终止时释放内存(仅仅是因为当程序停止时没有任何东西管理内存)。我敢肯定有人可能会看到内核模式代码不一定会在应用程序退出时释放其内存,或者他们可能会引用一些晦涩的嵌入式操作系统......但您可以假设 app-exit 返回您的用户模式代码获得的所有内存. (Windows 3.x 可能有此问题,具体取决于使用的分配器...)

你“应该释放你的内存”美德的原因是对于大规模的软件工程,你应该努力开发使用灵活的组件,因为你永远不知道其他人会如何改变你的代码的使用离开团队后。

像这样想。假设您设计了一些设计为单例的类(在应用程序生命周期内仅实例化一次)。因此,您决定在组件销毁或最终确定时不理会内存清理。在那一刻,这是一个非常好的决定。多年后,在您前往更绿色的牧场之后,其他人可能会出现并决定他们需要在多个地方使用您的类,以便在应用程序生命周期内许多实例会来来去去。您的内存泄漏将成为他们的问题。

在我的团队中,我们经常谈论让用户启动的应用程序“关闭”只是 exit() 而不做任何清理。如果我们这样做,我仍然会强制团队开发类和组件,以便他们自己正确清理。

关于memory-management - 哪些操作系统不会在程序退出时释放内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3126149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com