我编写了一个 C 程序,其中包含使用该malloc()
函数分配内存的代码。如果我不使用该free()
函数释放内存,Ubuntu 会自动释放它吗?
答案1
是的。
当程序终止时,内核将释放该程序分配的所有资源。
这是do_exit()
在 中定义的函数kernel/exit.c
终止执行后完成的;do_exit()
函数执行本身可能由许多事件触发,最常见的是exit()
程序在常规计算期间调用的显式系统调用或exit()
程序终止时调用的隐式系统调用(因为 C 编译器exit()
在main()
返回后放置系统调用)。其他原因包括接收到无法处理/无法忽略的信号或异常。
该do_exit()
函数本身执行多项任务。终止执行后,程序分配的资源将由内核释放并返回给系统以供进一步使用。