Académique Documents
Professionnel Documents
Culture Documents
Estruturas de Dados I
Alocao
Processo de reserva de uma ou mais clulas
de memria para uma varivel de programa;
Desalocao
Alocao Dinmica de Memria
aelm@unicap.br
Gerenciamento de Memria
O tempo de vida de uma varivel o
tempo durante o qual ela permanece
vinculada a uma localizao de
memria especfica;
O tempo de vida de um varivel o
intervalo de tempo decorrente entre a
sua alocao (criao) e a sua
desalocao (destruio).
aelm@unicap.br
Gerenciamento de Memria
Classificao das Variveis
Variveis Globais
Variveis Locais
Variveis Dinmicas (Heap)
aelm@unicap.br
aelm@unicap.br
Gerenciamento de Memria
Gerenciamento de Memria
Variveis Globais
So alocadas AUTOMATICAMENTE no incio
da execuo do programa;
So desalocadas AUTOMATICAMENTE no
final da execuo do programa.
aelm@unicap.br
Variveis Locais
So alocadas AUTOMATICAMENTE no incio
da execuo do sub-programa no qual foram
declaradas;
So desalocadas AUTOMATICAMENTE no
final da execuo do sub-programa no qual
foram declaradas.
aelm@unicap.br
Gerenciamento de Memria
Variveis Dinmicas (Heap)
Uma varivel heap uma varivel dinmica
que pode ser alocada e desalocada PELO
PROGRAMADOR a qualquer momento
durante a execuo do programa.
Uma varivel heap uma varivel annima,
ou seja, sem nome, e por isso s pode ser
acessada atravs de seu endereo.
Gerenciamento de Memria
A criao (alocao) de uma varivel heap feita
atravs de uma funo chamada alocadora.
Esta funo retorna o endereo da varivel heap
alocada.
Funo alocadora: malloc
Sintaxe:
void * malloc qtdBytes;
Semntica:
A funo malloc retorna o endereo do bloco de
memria de tamanho qtdBytes alocado.
aelm@unicap.br
aelm@unicap.br
Gerenciamento de Memria
Gerenciamento de Memria
Exemplo:
Exemplo:
int * ptr1;
float * ptr2;
ptr1 = (int *) malloc(sizeof(int));
ptr2 = (float *) malloc(sizeof(float));
OBSERVAO:
Como malloc retorna ponteiro para void,
necessrio fazer a converso para o tipo de
ponteiro correspondente ao dado que ser
armazenado na heap.
ptr
aelm@unicap.br
aelm@unicap.br
Gerenciamento de Memria
Gerenciamento de Memria
Exemplo:
Exemplo(cont):
(v)ptr->peso = 54.6;
nome
ptr
idade
peso
altura
nome
ptr
nome
idade
peso
altura
ptr
idade
peso
54.6
altura
aelm@unicap.br
aelm@unicap.br
Gerenciamento de Memria
Exemplo:
ptr
(iii) *(ptr + 1) = 5
ptr
...
98
99
Sintaxe:
free (ponteiro);
Semntica:
A funo free devolve a memria apontada
pelo ponteiro de volta para o heap. Isso torna
a memria disponvel para alocao.
aelm@unicap.br
aelm@unicap.br
Gerenciamento de Memria
Gerenciamento de Memria
Exemplo:
free ptr;
Observao:
ptr
IMPORTANTE:
(i)
aelm@unicap.br
aelm@unicap.br
Gerenciamento de Memria
Gerenciamento de Memria
Gerenciamento de Memria
aelm@unicap.br
Gerenciamento de Memria
Problemas com Variveis Heap
Referncia Perdida Exemplo 2:
float *ptr1, *ptr2;
ptr2 = ptr1;
free ptr1;
aelm@unicap.br