Função malloc em c

Função malloc em c

“Dentro da linguagem C, a alocação de memória é um conceito muito conhecido, e temos muitas funções para alocar memórias para diferentes mutáveis, eu.e., Memória dinâmica, memória estática, etc. A função malloc () de C é uma dessas funções que não apenas aloca memória para um mutável específico, mas também retorna um ponteiro de endereço onde essa memória foi armazenada. Este artigo iria ajudá -lo com o uso de Malloc em C enquanto usava o Ubuntu 20.04 Sistema. Faça seu sistema atualizado antes de pular na implementação do código C, pois o ajudará a executar suavemente seus códigos no shell. Assim, atualizamos até agora e nos pediu para adicionar a senha para o usuário que está funcionando atualmente. Fornecemos uma senha e o processo foi concluído em alguns segundos.”

Vamos implementar este artigo no idioma C; Assim, exigimos que seu compilador seja instalado no nosso fim. O Linux possui o utilitário "GCC" C como um compilador que pode ser instalado com "apt", como fizemos na imagem mostrada. Agora, você pode tornar seu código de código livre em segundos.

Antes de começarmos com o nosso exemplo C, deve haver um arquivo no qual adicionamos os códigos C para compilação e execução. Portanto, estamos criando um arquivo “arquivo.C ”. O arquivo deve ter um “.Extensão C ”em suas extremidades para identificá -lo como um arquivo C.

Exemplo 01

Dentro dessa ilustração de código, usaremos a função MALLOC () para alocar memória para uma variável usando algum valor constante e exibir se a memória tiver sido atribuída com sucesso ou não. Temos que iniciar esse código C com os principais cabeçalhos da biblioteca C que devem ter em um código e, sem eles, nosso código seria inútil para executar. O código contém uma função main () que vai executar tudo o que precisamos para alocação de memória e erro de exibição se a memória não for alocada com sucesso. A função começa a partir da inicialização de uma variável inteira constante "a" como vazia.

Especificamos uma variável de ponteiro duplo de tipo longo “V” para alocar memória usando a função MALLOC (). Esta função MALLOC () usa a variável inteira constante "A" para alocação de memória para o ponteiro "M."Há uma declaração" if-else "utilizada para verificar se a memória foi alocada para a variável de ponteiro" m "ou falhou em alocar a memória. Então, é a parte "se" que verificaria se o valor de "M" é nulo ou não. Se for "nulo", a função printf () usada dentro dele demonstrará uma mensagem de erro, eu.e., "Sem memória" com uma quebra de linha no final usando o "\ n n.”

Além disso, a declaração de função “Exit (-1)” será encerrada. Enquanto a parte eliminada usaria as declarações de função 2 printf (), eu.e., A primeira declaração a exibir o valor de uma variável inteira constante "A" e a segunda declaração para exibir a mensagem de sucesso com a memória especificada. Vamos salvar nosso código antes de fazê -lo compilar código -fonte para execução.

#incluir
#incluir
int main ()
const int a = "";
Long Double *M = (Long Double *) Malloc (Sizeof (Long Double) *A);
if (m == null)
printf ("Erro: sem memória \ r \ n");
saída (-1);
outro
printf ("value = %d \ n", a);
printf ("ótimo, memória: %lf \ n", *m;

Na compilação, ele exibiu alguns avisos, mas podemos ignorá -los por um momento. Na execução do código compilado, recebemos uma mensagem de erro "sem memória" porque não tínhamos inicializado nenhum valor inteiro para a variável "a" para alocação de memória.

Estamos atualizando o mesmo código -fonte adicionando um valor inteiro "500" para uma variável "A" para que possamos atribuir uma memória exata a uma variável de ponteiro "M.”Salve este código atualizado por enquanto.

#incluir
#incluir
int main ()
const int a = 500;
Long Double *M = (Long Double *) Malloc (Sizeof (Long Double) *A);
if (m == null)
printf ("Erro: sem memória \ r \ n");
saída (-1);
outro
printf ("value = %d \ n", a);
printf ("ótimo, memória: %lf \ n", *m;

Ao compilar este código atualizado, não temos erros, nem mesmo um aviso que foi mostrado antes. Após a execução deste código compilado e atualizado, obtivemos o valor da variável “A” exibida junto com a memória alocada em pontos decimais, I.e., Não exibe um valor exato de memória.

Exemplo 02

Vamos dar uma boa olhada em outro exemplo para alocar memória para uma variável específica. Assim, comece este exemplo com o uso de “stdio.h "e" stdlib.h ”cabeçalhos antes de qualquer outra coisa. O método principal () obteve sua execução começa a partir da declaração de um ponteiro do tipo de caractere "A" variável. A próxima linha usa a função MALLOC () para criar uma memória para um ponteiro de caractere do tamanho 10. Esta é uma alocação de memória inicial para o ponteiro “a.”

Depois disso, a função strcpy () está aqui para copiar uma sequência de palavras para um ponteiro variável “a.”O uso de printf () é uma obrigação para exibir nosso valor de string apenas salvo em ponteiro variável“ a ”junto com seu endereço de memória no shell. O caractere especial “%s” indica o valor da string, enquanto o “%u” indica o endereço a ser exibido. Depois disso, estamos realocando uma nova memória para a mesma variável de ponteiro de personagem "a" do tamanho 20 usando a função realloc () da linguagem C. Há um uso da função strcat () para concatenar um ponteiro variável "a" com um novo valor de string "idioma.”

Depois disso, utilizamos novamente a instrução printf () para exibir o valor da string recém -concatenado junto com o endereço de um ponteiro variável “a."Depois disso, tentamos a função" livre "no ponteiro variável" A "para liberar a memória alocada. Vamos primeiro salvar este código e depois tentar o compilador GCC no shell para compilá -lo rapidamente.

#incluir
#incluir
int main ()
char *a;
A = (char *) Malloc (10);
strcpy (a, "Bem -vindo ao C");
printf ("value = %s, endereço: %u \ n", a, a);
strcat (a, "idioma");
printf ("value = %s, endereço: %u \ n", a, a);
grátis (a)

Agora, vamos compilar nosso código com "GCC", conforme apresentado abaixo. Embora o uso da função "strcpy" mostre um aviso, ela não nos impede de executar o código.

Depois de compilar o arquivo.Arquivo C C, nós o executamos no aplicativo de console com o “./a.OUT "consulta de Linux para executar os arquivos de código. Você verá uma saída de duas linhas mostrando dois valores diferentes para um ponteiro variável "A", mas o mesmo endereço, eu.e., valores antigos e atualizados. Isso significa que a memória alocada foi atualizada, mas o endereço permanece o mesmo para uma variável “a.”

Conclusão

É isso! Agora, você poderá criar seus códigos para atribuir memória a alguma variável específica em seu sistema usando a função malloc () de C.