Aloca;'ao dinamica de memoria e ponteiros
Quando um programa é executado, o sistema operacional coloca o código do programa (as instruções em linguagem máquina) na memória do computador. Além das instruções, o sistema operacional também reserva memória para as variáveis que o programa vai utilizar.
O mais interessante de tudo é que o programa não é o única coisa que está na memória do computador. Resumindo, a memória do computador é um recurso que é partilhado pelos vários programas dos vários utilizadores. Quem se encarrega de fazer a gestão da memória é o sistema operacional.
O próprio sistema operacional também é um programa (mais corretamente, é um conjunto de programas) e ele próprio também ocupa parte da memória do computador.
Quando a memória do computador começa a ficar cheia, o sistema operacional pode utilizar parte do disco para servir de memória RAM. A desvantagem disso é que o tempo de acesso ao disco é muito menor do que o tempo de acesso à memória RAM.
A Alocação de memória, consiste no processo de solicitar/utilizar memória durante o processo de execução de um programa de computador. A alocação de memória no computador pode ser dividida em dois grupos principais:
Alocação Estática: os dados tem um tamanho fixo e estão organizados seqüencialmente na memória do computador. Um exemplo típico de alocação estática são as variáveis globais e arrays;
Alocação Dinâmica: os dados não precisam ter um tamanho fixo, pois podemos definir para cada dado quanto de memória que desejamos usar. Sendo assim vamos alocar espaços de memória (blocos) que não precisam estar necessariamente organizados de maneira seqüencial, podendo estar distribuídos de forma dispersa (não ordenada) na memória do computador. Na alocação dinâmica, vamos pedir para alocar/desalocar blocos de memória, de acordo com a nossa necessidade, reservando ou liberando blocos de memória durante a execução de um programa. Para poder “achar” os blocos que estão dispersos ou espalhados na memória