Realloc c

Realloc c
O conceito da função realloc () na linguagem de programação C será discutido neste artigo. Para começar com esse conceito, devemos saber sobre o conceito de alocação de memória e as diferentes funções de alocar memória em c. Existem dois tipos de alocação de memória na linguagem de programação C: alocação de memória estática e alocação de memória dinâmica.

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:

  1. Função Malloc (),
  2. Função Calloc (),
  3. Função realloc (),
  4. Função livre ().

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.