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.