Estrutura de Dados II
Alocação Dinâmica
Alocação de memória
• Ao ser executado, um programa carrega seu
código executável para a memória;
• Uma parte da memória é ocupada pelas
instruções do programa e a outra para os
dados;
Alocação de memória
• Quem é responsável por determinar a
quantidade de memória necessária para as
instruções e para os dados do programa?
–
–
Instruções: compilador;
Dados: programador.
Alocação de memória
• Quais são os tipos de alocação de memória?
–
–
–
–
Estática;
Dinâmica;
Sequencial;
Encadeada.
• Um vetor simples, utiliza quais tipos de
alocação de memória?
–
Estática e sequencial.
Alocação de memória
• Questão para discussão:
–
Quais são os tipos de alocação de memória da
lista representada graficamente abaixo?
Lista
a1
320
1C34
Dinâmica e encadeada
a2
1550
a1
BD2F
19
an
3A7B
...
25
null
Ponteiros
• Um ponteiro é uma variável que possui como
conteúdo uma referência para uma variável
dinâmica.
• O que é uma variável dinâmica?
–
É uma variável que pode ser criada e destruída
durante a execução do programa.
Ponteiros
• Exemplo de alocação de variáveis estáticas e
dinâmicas:
Variável
Endereço Conteúdo
i (inteiro)
AB1
7
k (inteiro)
AB2
2
AB3
AB4
pt1 (ponteiro)
AB5
AB8
AB6
pt2 (ponteiro)
AB7
AB8
AB9
AB8
Ponteiros
• Em C, C++, Pascal e outras linguagens, o
programador é responsável por liberar
explicitamente a memória ocupada por uma
variável dinâmica;
• A linguagem Java possui um recurso que
elimina essa necessidade, o Garbage Collector
(Lixeiro);
• Java não suporta o trabalho direto com
ponteiros.
Ponteiros
• Ponteiros em Java:
–
–
A instanciação de uma variável de um tipo não
primitivo é um ponteiro.
Veja o código abaixo:
Ponteiros
• Ponteiros em Java:
–
Celula é uma classe interna, portanto, uma
variável instanciada do tipo Celula é um
ponteiro para o local na memória onde o objeto
está armazenado.
Ponteiros
• Ponteiros em Java:
–
Questões para discussão:
•
•
O código refere-se a que tipos de alocação de
memória? sequencial e encadeada
Faça uma representação gráfica da classe após
executado o seu construtor:
ultimo
primeiro
pos
Bibliografia
–
PUGA, Sandra; RISSETTI, Gerson. Lógica de
programação e estrutura de dados: com aplicações em
Java.
•
Capítulo 8 – Busca e ordenação.
Download

Banco de Dados II