Eu escrevi um programa C contendo código que aloca memória usando a malloc()
função Se eu não liberar a memória usando a free()
função, o Ubuntu a liberará automaticamente?
Eu escrevi um programa C contendo código que aloca memória usando a malloc()
função Se eu não liberar a memória usando a free()
função, o Ubuntu a liberará automaticamente?
Respostas:
Sim.
O kernel liberará todos os recursos alocados por um programa após o término do programa.
Isso é feito depois que a do_exit()
função definida em kernel/exit.c
encerra sua execução; a do_exit()
própria execução da função pode ser desencadeada por vários eventos, mais comumente por um exit()
syscall explícito chamado pelo programa durante seu cálculo regular ou por um exit()
syscall implícito chamado pelo programa após o término (como o compilador C coloca um exit()
syscall depois main()
de s Retorna). Outras razões incluem a recepção de um sinal ou exceção não manipulável / não ignorável.
A do_exit()
função em si executa várias tarefas. Após o término de sua execução, os recursos alocados do programa são liberados pelo kernel e retornados ao sistema para outros usos.