Na programação C, quando executamos um programa, ele ocupa alguma memória no sistema. Se usarmos a memória estática, precisamos atribuir um bloco de memória fixo do sistema e, após a execução do programa, dois cenários poderão acontecer; O programa precisará de um tamanho de bloco maior do que o tamanho declarado ou precisará do bloco de tamanho menor de memória. Se o bloco de memória se tornar menor para o programa executado, os resultados não serão precisos e se o tamanho do bloco for maior para o programa executado, a memória livre restante do bloco não for útil.
Para evitar isso, é preferido usar memória dinâmica na programação C, que possui diferentes tipos de funções.
O que é uma função malloc () na programação C
Na programação C, se usarmos a memória estática, não podemos alterar o tamanho da memória durante a execução do programa. É uma prática recomendada usar memória dinâmica na programação C, para que o tamanho da memória possa ser alterado durante a execução do programa.
Para o uso da memória dinâmica, precisamos incluir um arquivo de cabeçalho “Stdlib.h ", que inclui todas as funções da memória dinâmica. O malloc () também é membro do stdlib.biblioteca H e é usado para atribuir memória ao programa executado. Quando uma função malloc () é chamada em um programa, ela envia uma solicitação para a pilha do sistema, que atribui o bloco de memória solicitado à função malloc () ou retornará um valor nulo se não houver espaço suficiente no pilha.
O Malloc () solicita o bloco de memória de acordo com a necessidade do programa executado e, quando o programa é executado com sucesso, podemos devolver o bloco de memória à pilha usando a função gratuita () para que possa ser usada para a execução de outras instruções.
A sintaxe geral da função malloc () é:
ptr_name = (tipo de elenco*) Malloc (tamanho);A explicação para a sintaxe acima é simples:
Para uma melhor compreensão, consideraremos um exemplo, criaremos um arquivo com o nome de mal_txt.c e digite o seguinte script:
#incluirPara compilar o mal_txt.Arquivo C, usamos o compilador GCC:
$ gcc mal_txt.c -o mal_txtDepois que o arquivo for compilado com sucesso sem nenhum erro, execute o código usando o comando:
$ ./mal_txtNo código acima, estamos criando a matriz e imprimindo a soma dos elementos da matriz. Uma explicação detalhada do programa acima é:
O que é uma função realLoc () na programação C
Outra função da memória dinâmica é a função realloc (), é usada para modificar o bloco de memória atribuído à função MALLOC (). A função malloc (), conforme discutido acima, solicita um bloco de memória da pilha, mas para modificar o tamanho do bloco de memória para que usamos a função realLoc () em vez de excluir todo o bloco de memória e redeclar o novo bloco de memória manualmente manualmente.
A função realloc () é a forma curta de "realocação da memória" e é usada para redimensionar o tamanho do bloco de memória atribuído pela função heap para malloc () ou calloc (). Ele não perturba o conteúdo original do bloco de memória e solicita o novo bloco de memória da pilha e copia todos os dados do bloco de memória antigo para o novo bloco de memória sem perturbar nenhum conteúdo dele.
A sintaxe geral de usar a função realLoc () é:
$ ptr = realloc (PTR, Newsize);A explicação da sintaxe acima é:
Novamente vamos criar um arquivo, real_file.c, e escreva o código nele para obter uma melhor compreensão do uso da função realloc ():
#incluirAgora compile o real_file.c usando o compilador GCC:
$ gcc real_file.C -o real_fileSe o arquivo for compilado com sucesso, execute o programa usando o comando:
$ ./real_fileA explicação do script acima é:
Conclusão
Na programação C, a alocação de memória dinâmica é a alocação manual da memória de acordo com o requisito do programa. As funções malloc () e realloc () fazem parte da memória dinâmica; Malloc () é usado para a alocação de memória e realloc () é usado para a realocação da memória. Neste artigo, explicamos os dois; funções malloc () e realloc (), como elas funcionam e qual é a sintaxe geral de usar os dois. Finalmente, para uma melhor compreensão, executamos os exemplos de ambas as funções.