Ubuntu 是否会在程序终止时自动释放由 C 程序分配的内存?

Ubuntu 是否会在程序终止时自动释放由 C 程序分配的内存?

我编写了一个 C 程序,其中包含使用该malloc()函数分配内存的代码。如果我不使用该free()函数释放内存,Ubuntu 会自动释放它吗?

答案1

是的。

当程序终止时,内核将释放该程序分配的所有资源。

这是do_exit()在 中定义的函数kernel/exit.c终止执行后完成的;do_exit()函数执行本身可能由许多事件触发,最常见的是exit()程序在常规计算期间调用的显式系统调用或exit()程序终止时调用的隐式系统调用(因为 C 编译器exit()main()返回后放置系统调用)。其他原因包括接收到无法处理/无法忽略的信号或异常。

do_exit()函数本身执行多项任务。终止执行后,程序分配的资源将由内核释放并返回给系统以供进一步使用。

来源

相关内容