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


11

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


它与Ubuntu无关,它是内核的责任。
用户

@user:特定版本的Ubuntu必须在Linux内核版本之一之上运行。因此它与Ubuntu有关,以便知道运行它的内核是否自动释放内存。
ashubuntu 2015年

Answers:


16

是。

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

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

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

资源


7
但这当然不是“忘记” free()的借口...
哈根·冯·埃岑2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.