estrutura de dados
Ponteiros, referencias dinâmicas e alocação de memoria
Prof. Cícero Samuel Clemente Rodrigues
O problema das variáveis
● Pode-se
assumir que as variáveis do algoritmo principal são alocadas uma vez, no início da execução e só liberadas ao final da execução.
● Isso
é chamado de alocação estática e gera dois problemas:
●
É preciso estimar corretamente o tamanho máximo que certas variáveis, como vetores e matrizes, vão ocupar
●
Muito espaço é alocado mas nunca utilizado.
● A área
onde variáveis comuns e conjuntos são alocadas é bastante limitada, fazendo com que tipos de dados globais(do algoritmo principal) facilmente preencham o espaço disponível na grande maioria dos sistemas (estouro de pilha)
Prof. C. Samuel C. Rodrigues - FJN
2
Alocação dinâmica de memória
● Uma
linguagem de programação costuma gerenciar separadamente regiões memória interna onde armazena: ●
código;
●
dados;
●
de armazenamento (Stack)
–
–
●
passagens de parâmetros e variáveis locais.
Heap
–
–
área de memória para alocação dinâmica normalmente mais extensa que as demais
Prof. C. Samuel C. Rodrigues - FJN
3
Variáveis e alocação de memória
● Todas
as Variáveis globais são estáticas e existem durante toda a vida útil do programa.
● As
variáveis locais e parâmetros também são estáticos e são alocadas no momento que os métodos são executados e são liberados no fim destes ● Já
variáveis dinâmicas são alocadas e eliminadas no momento que o programador desejar, e geralmente são manipulados a partir de ponteiros
Prof. C. Samuel C. Rodrigues - FJN
4
Alocação dinâmica de memória
● Alocar
memória dinamicamente significa gerenciar memória (isto é, reservar, utilizar e liberar espaço) durante o tempo de execução
● Isso
significa que o programador é responsável por controlar a reserva, ocupação e liberação de memória, durante a execução de um