Alocação de memória em C:
Os recursos estão constantemente em falta. Em todos os momentos, trabalhamos para melhorar o uso de recursos. Esta tem sido a base do nosso desenvolvimento. A alocação de memória é uma noção que está relacionada a esse objetivo. Para que variáveis reais possam ser criadas, a memória deve ser atribuída às variáveis que construímos. Agora há uma distinção entre como pensamos que as coisas acontecem e como elas acontecem. Quando pensamos em fazer tudo, pensamos em começar do início; No entanto, quando um computador faz uma variável 'x', é mais como distribuição; O sistema apenas escolhe uma célula de memória para X de um amplo pool de células de memória disponíveis. É como um quarto de hotel sendo designado para o nome de alguém de muitos quartos pré-existentes gratuitos ou vagos. Este exemplo provavelmente esclareceu como o computador gerencia a alocação de memória.
Agora, chegando aos tipos de alocação de memória que são permitidos na linguagem de programação C são alocação de memória estática e alocação de memória dinâmica. Quando definimos variáveis, estamos definindo todas as variáveis que serão usadas para que o compilador entenda o que estamos fazendo, porque a variável que está sendo usada é uma parte essencial do programa que o usuário deseja, não um símbolo Rouge flutuando.
Exemplo da vida real
Quando declaramos variáveis, o compilador as atribui a espaços de memória vagos como se estivessem em um hotel com quartos vazios pré-existentes que serão atribuídos a diferentes nomes do convidado. Como você pode ver, isso é feito antes da execução do programa; Você não pode usar essa abordagem para alocar variáveis enquanto o programa está em execução. É aqui que a alocação de memória dinâmica entra em jogo.
Exemplo de programação
Tome uma matriz como exemplo como o tamanho é declarado antes e você não pode ajustar o tamanho de uma matriz depois de declarar. É possível que a matriz que você especificou não seja grande o suficiente. Você pode alocar manualmente a memória durante o tempo de execução para remediar este problema. Isso é chamado de alocação de memória dinâmica. Existem várias funções da biblioteca no idioma de programação C que nos ajuda a alocar a memória dinamicamente, que são definidos no arquivo de cabeçalho ""; As funções são as seguintes:
A sintaxe para a função malloc
Malloc é a abreviação da alocação de memória. Um bloco de memória com o número especificado de bytes é reservado na função malloc (). Ele também retorna um ponteiro vazio que pode ser transformado em qualquer tipo de ponteiro. A sintaxe para a função malloc na programação C está escrita abaixo:
#p = (CastType*) Malloc (tamanho);Se escrevíssemos uma expressão para alocar memória para uma variável inteira, ficaria assim,
p = (int *) Malloc (100 * sizeof (int));O pedaço de código escrito acima deixa de lado 400 bytes de espaço de memória. A razão para isso é que o tipo de dados inteiro tem um tamanho de 4 bytes. O ponteiro “P” acompanha o byte inicial da memória alocada.
Função Sintaxe para Calloc ()
A alocação contígua é a abreviação do termo “Calloc.”Na programação C, a função Calloc () é usada para alocar uma certa quantidade de memória e redefini -la posteriormente para zero. Este endereço de memória é retornado como um ponteiro vazio, que pode ser posteriormente convertido para o tipo necessário. A função aceita dois argumentos que determinam a quantidade de memória a ser alocada como um todo. A função Sintaxe para Calloc () na programação C está escrita abaixo:
p = (CastType*) Calloc (n, tamanho);Agora vamos analisar a função realloc na programação C.
A função realLoc () em C:
RealLoc significa realocação. O método realloc () pode ser utilizado para alterar o tamanho da memória anteriormente alocada se a memória alocada dinamicamente for inadequada ou mais do que o necessário. A função realloc () retorna um ponteiro para um novo objeto com o tamanho fornecido pelo tamanho e desaloca o objeto antigo referenciado por PTR. Até o menor dos dois tamanhos, os elementos do novo objeto são semelhantes aos do objeto anterior antes de desalocntar. Quaisquer bytes no novo objeto que são maiores que o tamanho do objeto antigo têm valores indefinidos. Realloc () deve ser usado apenas para memória alocada dinamicamente; Vale a pena notar. O comportamento é desconhecido se o espaço de memória não for alocado dinamicamente.
Sintaxe para a função realloc ()
A sintaxe para a função realloc () na programação C está escrita abaixo:
# realloc (PTR, novo tamanho);Na expressão acima, o RealLoc é uma função que redimensiona o local da memória apontado por PTR. O título da variável ponteiro que deve ser redimensionada é "PTR". “Novo tamanho” refere -se ao novo tamanho da área de memória. Tem o potencial de ser menor ou maior que o tamanho atual.
Embora todas essas funções tenham alocadas com sucesso o espaço de memória, elas ainda não estão livres e temos que libertá -las explicitamente. É aqui que a função gratuita () é necessária para libertar o espaço alocado na memória. A sintaxe para a função gratuita () está escrita abaixo:
#Free (PTR);"PTR" é o nome do ponteiro cujo espaço de memória será liberado.
Agora vamos tentar executar a função realloc () no Ubuntu 20.04 Ambiente.
Implementando a função realLoc () no Ubuntu 20.04:
Como sabemos sobre a base da função realloc (), agora podemos implementar esta função no Ubuntu 20.04 Ambiente. Para fazer nosso código, inicie o terminal da sua área de trabalho do Ubuntu e digite “CD Desktop” para chegar ao diretório da área de trabalho, com este comando “touch”, você pode fazer um .arquivo C com o nome e extensão de .c. Em seguida, vá para o seu desktop e encontre e abra seu .Arquivo C. Agora criaremos algum código nesse arquivo para usar o método realLoc () para realocar a memória.
Inicialmente, adicionamos as duas bibliotecas mais significativas da linguagem C. Depois disso, começamos nosso programa principal. Declaramos uma variável de ponteiro e fizemos seu valor igual a "nulo". Que utilizamos o método realloc () e adicionamos dois parâmetros a ele. A declaração "se" é adicionada para verificar a condição. Se a condição declarada estiver boa, o compilador executará a instrução PRINTF.
Depois de pressionar o botão Salvar, feche o arquivo. Retorne ao terminal e digite “G ++” seguido pelo nome do seu arquivo e o “.Extensão C ”para produzir o arquivo de saída. Agora você pode executar esse arquivo digitando “./”Seguido pelo seu“.fora ”extensão para receber a saída desejada.
Como você pode ver, efetivamente realocamos o espaço de memória do ponteiro usando o método realloc (), e agora temos uma melhor compreensão de como essa função funciona em um aplicativo C devido a este exemplo.
Conclusão:
Neste tutorial, estudamos o conceito de alocação de memória e seus diferentes tipos. O objetivo deste artigo foi aprender sobre os prós e contras do método de alocação de memória e onde usá -los. As diferentes funções no método de alocação dinâmica de memória também foram discutidas em graves detalhes neste artigo. No final, também implementamos a função realloc () na linguagem de programação C no Ubuntu 20.04 ambiente para entender melhor este conceito.