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


11

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?


Não tem nada a ver com o Ubuntu, a responsabilidade de seu kernel.
usuário

@user: Uma versão específica do Ubuntu deve ser executada sobre uma das versões do kernel do Linux. Portanto, ele tem algo a ver com o Ubuntu, a fim de saber se o kernel em que está sendo executado libera a memória automaticamente ou não.
Ashubuntu 19/05

Respostas:


16

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.cencerra 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.

Fonte


7
Mas isso não é desculpa para "esquecer" a liberdade () ...
Hagen von Eitzen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.