Your SlideShare is downloading. ×
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Estrutura de dados em Java - Ponteiros e Alocação de Memória

4,764

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,764
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
87
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Ponteiros e Alocação Dinâmica de Memória Prof. Adriano Teixeira de Souza
  • 2. As variáveis de um programa, em geral, podem ter dois tipos de conteúdo: • Valor: instâncias de um determinando tipoint contador = 5; char letra = „b‟; double nota = 8.53; tipo: int tipo: char tipo: double valor: 5 valor: „b‟ valor: 8.53 • Referência: indica outra variável na memória int notas[2] tipo: ref. p/ int[] valor: {8, 10} texto valor: “abc” tipo: ref. p/ string Prof. Adriano Teixeira de Souza
  • 3. Atribuir uma variável de valor a outra apenas copiaseu conteúdo atual. Uma modificação em uma delasnão afeta a outra variável.Ponto p1, p2; p1 3 1 p2 x y x y...p1.x = 3;p1.y = 1; p1 3 1 3 1 p2... x y x yp2.x = p1.x; p1 5 1 3 1 p2p2.y = p1.y; x y x y...p1.x = 5; Prof. Adriano Teixeira de Souza
  • 4. Atribuir uma referência faz com que ambas apontempara o mesmo objeto. Qualquer alteração afeta as duasvariáveis.Java: p1 3 1 p2 ... x yPonto p1, p2;... 3 1 p1 p2p1.x = 3; x yp1.y = 1;... p1 5 1 p2p2 = p1; x y...p1.x = 5; Prof. Adriano Teixeira de Souza
  • 5. Em Java, todos os tipos primitivos são representadospor valores:char c; c = „a‟;int x, y; x = y = 3;Os tipos compostos (classes), por outro lado, utilizamreferências: s = “if672”;String s; p = new Ponto(3,1);Ponto p; p.x = x;Integer n; n = new Integer(3);Vector v; v = null; Prof. Adriano Teixeira de Souza
  • 6. A memória só é requisitada no momento em que o objeto énecessário, evitando o desperdício. Parâmetros do construtorEm Java/C++: através do operador newJava: Ponto p = new Ponto(800,600);C++: Ponto *p = new Ponto(800,600); Prof. Adriano Teixeira de Souza
  • 7. A memória é alocada para o novo objeto, e sua posiçãoarmazenada em uma referência (ponteiro): Memóriaint[] a; a bint[] b;... int[5]a = new int[5];b = new int[4];... int[4]a = b;Não há mais nenhum ponteiro para esta região. O que acontece com ela? Prof. Adriano Teixeira de Souza
  • 8. Em C/C++, é preciso desalocar as variáveis antes deeliminar a última referência para ela.Em Java, isso não é necessário, pois o garbagecollector libera a memória automaticamente. Prof. Adriano Teixeira de Souza

×