Como libertar memória com a função malloc () em c programação
Video: Programação em C/C++ - Aula 33 - Ponteiros e Malloc
Conteúdo
Aqui está um segredo: Declarando uma variável na programação C é, na realidade, dirigindo o programa para pedir algum espaço de armazenamento do sistema operacional. Como você sabe (espero, você sabe), o sistema operacional é o senhor Elevado Mestre do computador ou qualquer dispositivo eletrônico que você está programando. Como tal, ele distribui RAM para programas que o solicitem.
Quando você declarar uma variável, a partir de uma short int humilde para um buffer de string enorme, você está dirigindo o programa para pedir que muito espaço, no qual você pretende colocar algo útil. Na linguagem C, também é possível alocar memória em tempo real, enquanto você tem um exército de ponteiros na mão para salvar os endereços.
Fundamentos do malloc () função
A função malloc () existe para saciar os desejos de memória do seu programa. Dê-lhe um ponteiro, e malloc () aloca memória (entendeu?) Em um determinado tamanho para armazenar um certo tipo de variável. Aqui é o formato:
p = (tipo *) Malloc (Tamanho) -
tipo é um typecast, dirigindo malloc () para alocar um bloco de memória de tamanho para armazenar a quantidade adequada de informações para o tipo de variável.
Tamanho é a quantidade de armazenamento que é necessário. É medido em bytes, mas você deve ter cuidado para alocar armazenamento suficiente para acomodar o tipo de variável. Por exemplo, se você precisa de espaço para armazenar um valor int, você precisa criar espaço de armazenamento suficiente para que um valor int se encaixa. Esse número de bytes é tradicionalmente calculada usando o operador sizeof.
A função malloc () retorna o endereço do bloco de memória que está alocado. O endereço é armazenado no ponteiro p, que deve corresponder ao tipo de variável. Quando a memória não pode ser alocado, um valor NULL é retornado.
Você deve verificar a NULL antes de usar a memória alocada! Se não o fizer, o programa irá reunir-se com certo perigo.
Finalmente, você precisa incluir o arquivo de cabeçalho stdlib.h em seu código-fonte para manter o compilador satisfeito com a função malloc (). Dá-me espaço mostra um exemplo.
Dê-me espaço
#include #include int main () {int * idade-idade = (int *) malloc (sizeof (int) * 1) -se (idade == NULL) {coloca ("Não é possível alocar memória") -exit (1) -} printf ("Quantos anos você tem? ") -scanf ("% d", Idade) -printf ("Você está% anos d old.n"* Idade) -Retornar (0) -}
A primeira coisa a notar sobre Dê-me espaço é que a única variável declarada é um ponteiro, idade. Uma variável int não está definido, mesmo que o programa aceita entrada int e exibe int saída.
Linha 8 usa malloc () para anular armazenamento para um número inteiro. Para garantir que a quantidade adequada de armazenamento é alocado, o operador sizeof é usado. Para atribuir espaço para um número inteiro, o valor 1 é multiplicado pelo resultado da operação sizeof (int). (Esse processo é desnecessário neste momento, mas ela entra em jogo mais tarde.) O endereço do que o armazenamento é salvo no ponteiro idade.
Linha 9 testes para garantir que malloc () foi capaz de alocar memória. Se não, o valor devolvido é NULL (que é uma constante definida em stdlib.h), e o programa exibe uma mensagem de erro (consulte a Linha 11) e sai (consulte a Linha 12).
Você vai notar que a função scanf () na Linha 15 não usa o & prefixo. Isso porque o era variável é um endereço de memória - é um ponteiro! Você não precisa do & nesse caso (assim como você não precisa do & por uma série lido pela função scanf ()).
Finalmente, notação Peeker é usado na linha 16 para exibir a entrada de valor.
Exercício 1: Fogo até um novo projeto usando o código-fonte a partir Dê-me espaço. Construir e executar.
Exercício 2: Usando Dê-me espaço como sua inspiração, escrever um programa que pede a temperatura atual fora como um valor de ponto flutuante. Tem o código perguntar se a entrada é Celsius ou Fahrenheit. Use malloc () para criar armazenamento para a entrada de valor. Mostrar a temperatura resultante em Kelvin. Aqui estão as fórmulas:
kelvin = + 273,15 Celsius-kelvin = (+ 459,67 Fahrenheit) * (5.0 / 9.0) -
Exercise 3: Escreva um programa que aloca espaço para três valores int - um array. Você precisa usar a função de apenas um malloc () para realizar essa tarefa. Atribuir 100, 200, e 300 para cada um int e, em seguida exibir todos os três valores.
Como criar armazenamento de corda
A função malloc () é comumente utilizada para criar um buffer de entrada. Esta técnica evita a declaração e dimensionamento de uma matriz vazia. Por exemplo, a notação
entrada char [64] -
pode ser substituída por esta declaração:
Video: Como liberar Mais de 30 GB de espaço no HD - Disco local C Windows 7 - 8 e 10
char * input-
O tamanho da memória intermédia é estabelecida dentro do código usando a função malloc () .Em A atribuição de uma memória intermédia de entrada, a função malloc () na linha 8 declara uma matriz de char - um tampão de armazenamento - para cerca de 1024 bytes. Ok, é um kilobyte (KB).
Atribuição de um buffer de entrada
#incluir
#incluir
int main ()
{
char * input-
de entrada = (char *) malloc (sizeof (char) * 1024) -
se (entrada == NULL)
{
puts ("Não é possível alocar tampão! Ah não!") -
saída (1) -
}
puts ("Digitar algo longo e chato:") -
fgets (entrada, 1023, stdin) -
puts ("Você escreveu:") -
printf ("% s"n"