gpt4 book ai didi

memory-leaks - 内存泄漏和操作系统

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

我知道每个进程都有操作系统分配的自己的地址空间。所以当程序终止时,整个地址空间都被标记为无效(或者可以再次自由重用)。现在,如果上述进程正在泄漏内存,那么在程序终止后会产生什么影响吗?

也就是说,如果我的程序在一段时间后终止或以连续的开始-完成机制在很短的时间间隔内运行,泄漏内存会有很大的不同吗? (我假设泄漏不足以导致普通系统出现颠簸)

我知道泄漏很糟糕 - 但我的问题源于假设在代码的最终例程中使用了一个对象 - 修复泄漏不会有任何区别,因为无论如何进程将在此之后终止?

提前致谢 :)

最佳答案

这是一个非常依赖操作系统的问题。

在使用虚拟内存的现代多处理操作系统(例如:Windows 7、Linux)上,确实所有(好吧,不是 所有 ,但我们不要在这里挑剔)资源都是特定于进程的,并且当进程终止时将被释放回系统。

那么你的程序是否“泄漏内存”有关系吗?嗯,这取决于它是如何做到的。

如果您在启动时分配了一堆资源,那么您在关机时手动释放它们还是让操作系统来做这件事并不重要。我承认我是一个懒惰的程序员,喜欢让操作系统处理这些事情。

但是,如果您出于某种原因在循环中或在运行时按需分配资源,并且不费心以某种方式管理它们,那么理论上如果您让程序运行足够长的时间,它将不断“泄漏”资源,直到点来了,没有更多可以分配了。这是一个 坏事 .不要这样做。

现在有很多平台不以这种方式运行。如果您最终从事嵌入式工作,那么您很可能最终会进入一个必须管理您自己的所有资源(手动释放内存、关闭文件句柄等)的平台。

关于memory-leaks - 内存泄漏和操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6843794/

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