Em C - uma linguagem de programação desenvolvida por Dennis Ritchie no AT & T Bell Laboratories no início de 1970 - a função malloc é um meio de alocação de memória de forma dinâmica, ou em resposta à demanda , em vez de em termos absolutos. Às vezes, os programadores não sei como vai ser necessário mais memória para dados no momento em que está escrevendo um programa, assim malloc lhes permite alocar memória dinamicamente após o início do programa em execução. Alocação de memória
Por padrão , a função malloc aloca um bloco contíguo ou adjacente, de memória em uma área conhecida como uma pilha , que pode ser acessado por um programa para armazenar dados e variáveis. A função malloc recebe um único argumento , um inteiro longo ou de 32 bits que representa o número de bytes para alocar no heap. A função malloc pede o sistema para um bloco de memória do tamanho especificado e retorna um ponteiro - um endereço , a partir do ponto de vista da linguagem de programação - . Ao primeiro elemento do bloco
Valor de retorno
Computadores só tem uma quantidade finita de memória , por isso é possível para a função malloc para solicitar mais memória do que a fisicamente disponível e fazer com que um programa deixe de funcionar. Se não há memória suficiente disponível, malloc retorna um ponteiro nulo, ou um ponteiro com um valor de zero. Para evitar que um programa de deixar de funcionar , os programadores devem testar explicitamente que malloc não retornou nulo, para que eles saibam que a memória solicitada foi alocado com sucesso antes de tentar usá-lo.
Liberando memória
Da mesma forma, um computador não pode perpetuamente alocar mais e mais memória - e substituindo várias vezes um ponteiro que aponta para a memória alocada dinamicamente pode levar a dados tornando-se inacessível. Memória alocada dinamicamente deve ser liberado de volta para o pool de memória do sistema, através da função livre , uma vez que não é mais necessário . Uma vez que um processo termina , toda a memória alocada dinamicamente é liberado de volta para o pool de memória .
Sintaxe
Malloc retorna um ponteiro genérico , ou um ponteiro para void , mas o ponteiro pode ser digitado ou estereotipado , para indicar o tipo de dados para o qual ele aponta . A sintaxe " char * str = (char * ) malloc ( 40) ", por exemplo , aloca memória para uma string de 40 caracteres . Alternativamente , os programadores podem declarar um ponteiro e invocar malloc quando desejam abrir espaço para os elementos em uma matriz . No entanto , é importante notar que a função malloc só atribui memória . Não esvaziar ou não inicializar a memória que ele aloca .