Escolar Documentos
Profissional Documentos
Cultura Documentos
Semestre 2008/1
Prof. Leandro J. Komosinski
ALOCAO
DINMICA DE
MEMRIA
UFSCCTCINEINE5408EstruturasdeDados2008/1
Memria de Computador
1byte=8bits(ex.:00100110)
1KB=1024bytes
1MB=1024KB
1GB=1024MB
Meucomputadortem4GBdememria.
4GB=4*1GB
4*1GB=4*1024MB=4096*1MB
4096*1MB=4096*1024KB=4.194.304*1KB
4.194.304*1KB=4.194.304*1024bytes
4.194.304*1024bytes=4.294.967.296bytes
UFSCCTCINEINE5408EstruturasdeDados2008/1
Memria Lgica
de Computador
Amemriadocomputadorpodeserentendida,do
pontodevistalgico,comosendoumarray.
Meucomputadortem4GBdememria.
0123...4.294.967.295
Endereo de
Memria
ndicedoarray.
UFSCCTCINEINE5408EstruturasdeDados2008/1
Variveis em
um Programa
Para o
Programador
Umsmboloquerepresentauma
informao.
Para o
Computador
Nbytesdamemriareservados
pararepresentaralgumdado.
UFSCCTCINEINE5408EstruturasdeDados2008/1
...
publicvoidm(){
inta;
charb;
EmJava,umavariveldotipoint
ocupa4bytesdamemria.Uma
variveldotipocharocupa1byte
damemria.
a=7;
b='t';
}
...
...3738394041...
ab
Todavarivelocupaalgumaquantidade
debytesnamemria.
UFSCCTCINEINE5408EstruturasdeDados2008/1
Tipos de
Variveis
Quasetodasaslinguagensdeprogramaopermitemusardoistiposde
variveis:estticasedinmicas.
Variveis
Estticas
Odadoarmazenado
diretamentenareade
memriareservadaparaa
varivel.
Variveis
Dinmicas
Oprogramadordevealocar(reservar)
umaoutrareadememriapara
armazenarodado.Avarivelarmazena
oendereodareaquefoialocada.
UFSCCTCINEINE5408EstruturasdeDados2008/1
...
publicvoidm(){
char[]a;
charb;
avariveldinmica
bvairvelesttica
a=newchar[3];
a[0]='f';
a[1]='i';
a[2]='m';
b='t';
}
...
Variveisdinmicastambmso
chamadasdeponteiros
(pointers)ouapontadores.
...373839...
8283848586...
37
ab
UFSCCTCINEINE5408EstruturasdeDados2008/1
Tipos de
Variveis em
Java
Tipo Primitivo
Variveisdotipoprimitivo
soestticaserepresentam
nmeros,caracterebooleano.
EmJavaexistemdoistiposde
variveis:primitivoereferncia.
Tipo Referncia
Variveisdotiporefernciaso
dinmicaserepresentamobjetos,
classes,interfacesearrays.
UFSCCTCINEINE5408EstruturasdeDados2008/1
UFSCCTCINEINE5408EstruturasdeDados2008/1
new<tipo>
...
int[]b;
inttam;
Xp;
tam=5;
b=newint[tam];
p=newX();
...
...
Xp;
p=m();
...
publicXm(){
returnnewX();
}
...
Strings;
int[]v;
s=teste;
v=newint[]{3,70};
...
UFSCCTCINEINE5408EstruturasdeDados2008/1
publicclassX{
publicintv1;
publiccharv2;
}
inta;
charb;
Xp;
UFSCCTCINEINE5408EstruturasdeDados2008/1
MEMRIA
50
UFSCCTCINEINE5408EstruturasdeDados2008/1
MEMRIA
50
v1v2
UFSCCTCINEINE5408EstruturasdeDados2008/1
MEMRIA
50
v1v2
UFSCCTCINEINE5408EstruturasdeDados2008/1
MEMRIA
50
a
k
v1v2
UFSCCTCINEINE5408EstruturasdeDados2008/1
MEMRIA
50
a
k
50
v1v2
UFSCCTCINEINE5408EstruturasdeDados2008/1
MEMRIA
o1
o2
o3
UFSCCTCINEINE5408EstruturasdeDados2008/1
MEMRIA
o1
v1v2
o2
o3
UFSCCTCINEINE5408EstruturasdeDados2008/1
MEMRIA
o1
10
v1v2
o2
o3
UFSCCTCINEINE5408EstruturasdeDados2008/1
publicclassX{
publicintv1;
publiccharv2;
}
Xo1,o2,o3;
o1=newX();
o1.v1=10;
o2=o1;
o1
10
v1v2
o2
o3
UFSCCTCINEINE5408EstruturasdeDados2008/1
publicclassX{
publicintv1;
publiccharv2;
}
Xo1,o2,o3;
o1=newX();
o1.v1=10;
o2=o1;
o2.v2='k';
o1
10 k
v1v2
o2
o3
UFSCCTCINEINE5408EstruturasdeDados2008/1
publicclassX{
publicintv1;
publiccharv2;
}
Xo1,o2,o3;
o1=newX();
o1.v1=10;
o2=o1;
o2.v2='k';
o3=newX();
o1
10 k
v1v2
o2
o3
v1v2
UFSCCTCINEINE5408EstruturasdeDados2008/1
publicclassX{
publicintv1;
publiccharv2;
}
Xo1,o2,o3;
o1=newX();
o1.v1=10;
o2=o1;
o2.v2='k';
o3=newX();
o2=null;
o1
10 k
v1v2
o2
o3
v1v2
UFSCCTCINEINE5408EstruturasdeDados2008/1
publicclassX{
publicintv1;
publiccharv2;
}
Xo1,o2,o3;
o1=newX();
o1.v1=10;
o2=o1;
o2.v2='k';
o3=newX();
o2=null;
o1=null;
o1
10 k
v1v2
o2
o3
v1v2
UFSCCTCINEINE5408EstruturasdeDados2008/1
Xo1,o2,o3;
o1=newX();
o1.v1=10;
o2=o1;
o2.v2='k';
o3=newX();
o2=null;
o1=null;
o3.v1=o1.v1;
MEMRIA
o1
10 k
v1v2
o2
o3
v1v2
NullPointerException
Fim
UFSCCTCINEINE5408EstruturasdeDados2008/1