Existem três maneiras de se reservar espaço de memória para
o armazenamento de informações:
Uso de variáveis globais – o espaço reservado existe enquanto
o programa estiver sendo executado.
Uso de variáveis locais – o espaço reservado existe apenas
enquanto a função que declarou a variável está sendo
executada.
Reservar um espaço na memória dinamicamente: requisitar ao
sistema, em tempo de execução, um espaço de um
determinado tamanho.
malloc() // função básica para alocar memória.
A função malloc:
- Recebe como parâmetro o número de bytes que se deseja alocar.
- Retorna o endereço inicial da área de memória alocada.
Alocação dinâmica de um vetor de inteiros com 10 elementos, exemplo:
int *v; v = malloc (10*4);
Se a alocação for bem sucedida, ‘v’ armazenará o endereço inicial de uma área contínua de memória suficiente para armazenar 10 valores inteiros.
Operador sizeof(tipo) retorna o número de bytes que um
dado tipo ocupa na memória.
v = malloc(10*sizeof(int));
Exemplo esquemático do que ocorre na memória:
Se não houver espaço livre suficiente para realizar a alocação,
a função malloc retorna um endereço nulo (NULL).
A liberação do espaço alocado dinamicamente é feito através do uso da função ‘free()’, que recebe como parâmetro o ponteiro da memória a ser liberada.
free(v)
OBS:
- Só devemos passar para a função free um endereço de memória que tenha sido alocado dinamicamente.
- Uma vez liberado o espaço de memória alocado, o mesmo não pode mais ser acessado.
- Enquanto a função free não for utilizada, o espaço alocado dinamicamente permanecerá válido mesmo após o término de uma dada função.
Você teria como reupar as imagens deste post?
Pronto, obrigado pelo aviso 🙂