gpt4 book ai didi

linux - 操作系统是否必须取消分配进程的堆内存?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:00 27 4
gpt4 key购买 nike

当我搜索“如果 malloc 和 exit with not free 会发生什么?”时,我找到的答案是“今天,操作系统将在程序退出后回收所有分配的内存空间”。

在那个答案中,“恢复”是什么意思?操作系统只是在进程退出时删除它的 PCB 和页表,不是吗?操作系统是否必须执行其他任务才能完全终止进程?

最佳答案

当程序启动时,操作系统会为其分配一些内存。在程序执行期间,程序可以从操作系统请求更多的内存块,也可以在不再需要它们时释放它们。当程序退出时,它使用的所有内存都归还给操作系统。

malloc()/free() 对(以及它们的兄弟和等价物)不与 OS1 交互。它们管理程序启动时已经从操作系统获得的一 block 内存(称为“堆”)。

总而言之,从操作系统的角度来看,您的程序是否使用free() 并不重要。对于程序来说,当不需要一 block 内存来让进一步的分配成功(通过重用释放的内存块)时,使用 free() 很重要。


1 这并不完全正确。 malloc() 的实现可能会从操作系统获取更多的内存块,以便在堆满时扩展堆,但这个过程对程序是透明的。从程序的角度来看,malloc()free() 在已经属于程序的内存块中运行。

关于linux - 操作系统是否必须取消分配进程的堆内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43065076/

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