gpt4 book ai didi

c - malloc 会发生什么?

转载 作者:太空狗 更新时间:2023-10-29 16:01:45 25 4
gpt4 key购买 nike

好吧,我想我知道问题的答案,但我还是比较放心。如果您在堆上 malloc 内存并在释放空间之前退出程序,操作系统或编译器会为您释放空间吗?

最佳答案

当操作系统从其进程列表中删除进程的描述符(在 Linux 中为 task_struct)时,操作系统会为您释放空间。

编译器通常生成一个 exit()系统调用,所有这些都在这里处理。

在 Linux 上,基本上,所有这些都发生在内核的 exit_mm() 函数中,最终由 exit() 调用。它将通过mm_release() 函数释放进程拥有的地址空间。所有源代码都可供您阅读(尽管它可能会变得有点复杂 :) 但是,是的,操作系统负责释放进程的资源。

正因为我非常喜欢它,如果您对这些主题感兴趣,这是一本非常好的读物:Understanding the Linux Kernel .

关于c - malloc 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22637055/

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