¿Ubuntu libera automáticamente la memoria asignada por un programa en C cuando el programa termina?


11

He escrito un programa en C que contiene código que asigna memoria usando la malloc()función. Si no free()libero la memoria usando la función, ¿Ubuntu la liberará automáticamente?


No tiene nada que ver con Ubuntu, la responsabilidad de su núcleo.
usuario

@usuario: una versión particular de Ubuntu debe ejecutarse sobre una de las versiones del kernel de Linux. Por lo tanto, tiene algo que ver con Ubuntu para saber si el núcleo en el que se ejecuta libera la memoria automáticamente o no.
ashubuntu

Respuestas:


16

Si.

El núcleo liberará todos los recursos asignados por un programa al finalizar el programa.

Esto se hace después de que la do_exit()función definida en kernel/exit.chaya terminado su ejecución; la do_exit()ejecución de la función en sí misma puede ser activada por una serie de eventos, más comúnmente por una exit()llamada al sistema explícita llamada por el programa durante su cálculo regular o por una exit()llamada al sistema implícita llamada por el programa al finalizar (cuando el compilador de C coloca una exit()llamada al sistema después main()de regreso). Otras razones incluyen la recepción de una señal o excepción inmanejable / no ignorable.

La do_exit()función misma realiza una serie de tareas. Una vez que ha finalizado su ejecución, el núcleo libera los recursos asignados del programa y los devuelve al sistema para otros usos.

Fuente


77
Pero eso, por supuesto, no es excusa para "olvidar" lo gratuito () ...
Hagen von Eitzen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.