Buscar

644516_AED- Ponteiros

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

AED
Alocação dinâmica de memória e 
Ponteiros
PUC Minas
Curso de Sistemas de Informação
Baseado no material do Prof. João Caran
AED: Alocação Dinâmica
� Memória de um computador: o que é?
� "Caixas" para armazenamento de valores
� Podemos vê-la como um imenso array de bytes
� Esse array conterá código e dados dos 
processos do sistema
AED: Alocação Dinâmica
� Como acessamos a memória?
� Declaração de variáveis
� Mas as variáveis são uma abstração: um 
programa armazena endereços de memória
− i: 0
− j: 2
− nome: 4
32 1 26 J0 a o \0 $o p u c%
i j nome
AED: Alocação Dinâmica
� Ao utilizarmos uma variável, o programa na 
verdade vai até ao endereço indicado pelo 
seu nome.
� Ou seja, cada posição de memória tem um 
endereço e um valor
32 1 26 P0
i j nome 
0 1 2 3 4 5 6 7 8 9
u l o Ma
AED: Alocação Dinâmica
� O tamanho de cada variável depende de seu 
tipo ou classe
� Ex: 
− inteiro: 4 bytes
− char: 2 bytes
− byte: 1 byte
− strings: ??
− objetos: ??
AED: Alocação Dinâmica
� Ponteiro:
� É uma variável que armazena um endereço de 
memória, ou seja, aponta para outra variável.
� Utilizado, por exemplo, na passagem de 
parâmetros por referência.
� Analogia: 
− placas de sinalização
− papel contendo um endereço
AED: Alocação Dinâmica
� Ex:
� Variável "local": ponteiro com endereço 11.
� Qual o valor exibido pela variável?
� E se alterarmos o valor da variável?
� E se quisermos alterar o valor ao qual ela 
referencia?
32 1 26 J0 a o \0 $o p u c 11%
i j nome local
0 1 2 3 4 5 6 7 8 9 10 11
AED: Alocação Dinâmica
� Perigos no uso de ponteiros:
� Espaços de memória não utilizados;
� Não desalocar memória;
� Sobrescrever áreas indevidamente;
� Declaração explícita de ponteiros
� uso de *
� referência: uso de &
AED: Alocação Dinâmica
� Por padrão, o uso direto de ponteiros em C# 
é considerado inseguro (unsafe) e, assim, 
desabilitado
� Referência: uso protegido de ponteiros
� Ex: 
− parâmetros "ref"
− objetos e vetores em C#;
AED: Alocação Dinâmica
� Alocação dinâmica de memória
� Alocar memória dinamicamente de acordo com 
a necessidade do programa;
� Ex:
− Ao criar uma turma, quantos alunos ela irá receber?
− E se, depois de criada, a turma ainda receber mais 5 
alunos que se matricularam posteriormente?
AED: Alocação Dinâmica
� Alocação dinâmica de memória: 
� Uma estrutura de dados tem capacidade de 
instanciar dinamicamente um objeto/variável e 
apontar para ele (ou seja, incluí-lo na estrutura).
Joao 1001235
Jose 753215
Nome Mat Nota Prox
Nome Mat Nota Prox
AED: Alocação Dinâmica
� Alocação dinâmica de memória
� Desta forma, é possível criar uma estrutura de 
dados dinâmica – aquela cujo tamanho pode 
variar ao longo da execução do programa
Exemplo

Outros materiais