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? Dinâmica e encadeada Lista 3201C341550BD2F193A7B... 25null anan a2a2 a1a1 a1a1
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ávelEndereçoConteúdo i (inteiro)AB17 k (inteiro)AB22 AB3 AB4 pt1 (ponteiro)AB5AB8 AB6 pt2 (ponteiro)AB7AB8 AB9
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? Faça uma representação gráfica da classe após executado o seu construtor: sequencial e encadeada primeiro ultimo 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.