O Ubuntu libera automaticamente a memória alocada por um programa em C quando o programa termina?

11

Eu escrevi um programa C contendo código alocando memória usando a função malloc() . Se eu não liberar a memória usando a função free() , o Ubuntu irá liberá-la automaticamente?

    
por ashubuntu 14.05.2015 / 12:04

1 resposta

15

Sim.

O kernel lançará todos os recursos alocados por um programa na finalização do programa.

Isso é feito depois que a função do_exit() definida em kernel/exit.c tenha terminado sua execução; a execução da função do_exit() pode ser desencadeada por vários eventos, mais comumente por um% syscall exit() explícito chamado pelo programa durante sua computação regular ou por um% syscall exit() implícito chamado pelo programa na sua finalização (como o compilador C coloca um exit() syscall após o retorno de main() ). Outras razões incluem a recepção de um sinal ou exceção não manipulável / não ignorável.

A função do_exit() realiza uma série de tarefas. Depois de terminar sua execução, os recursos alocados do programa são liberados pelo kernel e retornados ao sistema para outros usos.

Fonte

    
por kos 14.05.2015 / 12:36

Tags