gpt4 book ai didi

memory-leaks - 应用程序内存泄漏会导致操作系统内存泄漏吗?

转载 作者:行者123 更新时间:2023-12-03 09:33:31 25 4
gpt4 key购买 nike

当我们说一个程序泄漏内存时,比如说 新品 没有 删除 在 C++ 中,它真的会泄漏吗?我的意思是,当程序结束时,该内存是否仍然分配给某些未运行的程序并且无法使用,或者操作系统是否知道每个程序请求的内存,并在程序结束时释放它?如果我多次运行该程序,是否会耗尽内存?

最佳答案

在具有 protected 内存的操作系统上(Mac OS 10+、所有 Unix 克隆,如 Linux,以及基于 NT 的 Windows 系统,即 Windows 2000 及更早版本),当程序结束时内存会被释放。

如果您经常运行任何程序而没有在其间关闭它(同时运行越来越多的实例),无论是否存在内存泄漏,您最终都会耗尽内存,因此对于具有以下功能的程序也是如此内存泄漏。显然,泄漏内存的程序会比没有内存泄漏的相同程序更快地填充内存,但是在不填充内存的情况下可以运行多少次更多地取决于程序正常运行需要多少内存,而不是是否存在内存泄漏或不是。除非您比较两个完全相同的程序,一个有内存泄漏,一个没有,否则这种比较真的没有任何值(value)。

当程序运行很长时间时,内存泄漏变得最严重。这方面的经典示例是服务器软件,例如 Web 服务器。例如,对于游戏、电子表格程序或文字处理器,内存泄漏几乎没有那么严重,因为您最终会关闭这些程序,从而释放内存。但是当然内存泄漏是令人讨厌的小野兽,应该始终作为原则问题来解决。

但是如前所述,所有现代操作系统都会在程序关闭时释放内存,因此即使存在内存泄漏,如果您不断打开和关闭程序,也不会填满内存。

关于memory-leaks - 应用程序内存泄漏会导致操作系统内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4149669/

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