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?
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?
Respuestas:
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.c
haya 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.