O que é uma lista grátis?
Uma lista livre é uma estrutura de dados que contém os endereços dos locais de memória do computador que estão disponíveis para uso por um programa em execução ao usar a alocação dinâmica de memória.A lista se torna necessária quando um programa deve alocar espaço de uma área de memória livre chamada heap.A implementação de uma lista livre pode ser uma lista vinculada simples ou uma estrutura de dados mais complexa, como um A maioria das linguagens de programação de computador de alto nível gerencia automaticamente a lista gratuita, eliminando a necessidade de gerenciamento manual.
Quando um programa requer espaço para armazenar informações durante a execução do programa, ele deve solicitar uma quantidade específica de memória ao sistema operacional subjacente.Os locais dos blocos de memória que podem ser utilizados são armazenados gratuitamente Para que a alocação seja bem-sucedida, a quantidade de memória solicitada precisa estar disponível em um ou mais desses blocos.Quando um ponteiro para um local de memória apropriado é retornado, esse elemento da lista é removido.
Depois que um programa é feito usando a memória, ele pode desalocá-lo, o que envolve passar o ponteiro para o bloco de memória de volta à lista livre, onde ficará disponível na próxima vez que uma alocação for realizada. É possível que a alocação de memória falhe porque a lista está vazia ou porque não há blocos de memória disponíveis grandes o suficiente para atender à solicitação do programa.
A forma mais simples de gerenciamento de memória é chamada de sistema de primeiro ajuste.Este sistema mantém uma lista única de locais de memória livre.Quando uma solicitação de memória é enviada, a lista é percorrida e o primeiro bloco se o tamanho for maior que o dobro do tamanho solicitado, ele será reduzido pela metade e a metade não utilizada será adicionada novamente à lista.Este método comercializa a codificação simples para o risco de ter áreas de memória fragmentadas que talvez nunca sejam retornadas à lista.
Uma forma diferente de gerenciamento de memória é chamada de sistema de alocação de amigos. Ao contrário do sistema de primeiro ajuste, a alocação de amigos mantém várias listas gratuitas, cada uma mantendo blocos abertos de apenas um tamanho específico. quando uma solicitação de alocação é recebida, a lista que contém blocos grandes o suficiente para atender à solicitação é consultada e um local aberto é retornado.Se não houver blocos livres com menos do dobro do tamanho solicitados estão disponíveis, um bloco maior é dividido em dois para atender aos requisitos.
O termo "lista livre" pode se referir a uma única lista vinculada de endereços de memória ou a um tipo muito mais complexo de estrutura de dados. Diferentes tipos de árvores de classificação, se mantidos simples e equilibrados, pode ajudar a aumentar a velocidade de encontrar blocos de memória abertos às custas de complicar o código-fonte.Uma lista vinculada pode ser mais lenta que uma árvore de classificação especializada, mas cria código de programação muito mais fácil de ler, depurar e modificar.
Algumas linguagens de programação e sistemas operacionais utilizam um mecanismo especial chamado coleta de lixo.Este é um processo que pode ajudar a levar as diferentes entradas de uma lista livre e consolidar os espaços livres para que sejam contíguos. o efeito de impedir a fragmentação e permitir que blocos maiores de memória sejam alocados.