/ vazamento de memória / lixo c ++ e memória de lixo - c ++, gerenciamento de memória, vazamentos de memória

vazamento de memória e memória lixo c ++ - c ++, gerenciamento de memória, vazamentos de memória

Eu posso ver que, se alocarmos memória dinamicamenteem c ++, mas não o gerenciam corretamente, podemos ter memória de lixo, e podemos essencialmente obter vazamento de memória, e é claro porque isso acontece. Porque se, por exemplo, temos um ponteiro que aponta para um endereço de memória, e atribuímos esse ponteiro a outro espaço de endereço antes de liberar o endereço atual, então é um problema. Mas o que eu não entendo, é que digamos que temos um programa ruim que continua adicionando memória lixo, mas como é que tudo volta ao normal, quando fechamos o programa. Se por exemplo, temos uma memória de lixo que foi introduzida com um programa c ++, então não há mais ponteiro apontando para essa memória de lixo, e como é que depois de fechar o programa, toda a memória de lixo é liberada? Como o programa sabe como limpar a memória do lixo antes que o programa seja fechado?

Respostas:

3 para resposta № 1

Não há memória de lixo, não é o seu programaque aloca e libera memória. É o sistema operacional subjacente. Você está trabalhando em um sistema operacional usando seus serviços. A memória heap e a loja livre são apenas uma abstração que esses serviços fornecem (entre outras abstrações, tais arquivos, "eu sou o único processo em execução nesta CPU exclusiva", etc)


1 para resposta № 2

No sistema operacional Windows, o sistema operacional limpa qualquer memória alocada por um processo. Então, basicamente, joga fora o espaço que foi dado a um processo sem se importar com o que ele continha.