Buscar

Aula 8 - ALOCAÇÃO DINÂMICA

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 21 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 21 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 21 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

PROGRAMAÇÃO II 
AULA 8 – ALOCAÇÃO DINÂMICA 
 
 
 
 
 
 
 
CIÊNCIA DA COMPUTAÇÃO 
 
CONVERSÃO DE TIPOS 
 
Se o destino e a origem são de tipos diferentes o 
compilador faz uma conversão de tipos; 
 Nem todas as conversões são possíveis; 
 
O valor de origem é convertido para o valor de 
destino; 
 
Em uma conversão nunca ganhamos precisão, 
podemos perder precisão ou no máximo manter 
a precisão anterior. 
 
2 
CONVERSÃO DE TIPOS 
3 
ALOCAÇÃO DINÂMICA 
A alocação dinâmica permite ao 
programador alocar memória para 
variáveis quando o programa está sendo 
executado; 
 
Podemos definir por exemplo o tamanho de um 
vetor ou matriz cujo tamanho descobriremos em 
tempo de execução; 
 
Vamos estudar 4 funções para o sistema de 
alocação dinâmica, disponíveis na biblioteca 
stdlib.h; 
4 
ALOCAÇÃO DINÂMICA 
-MALLOC 
A função malloc() serve para alocar 
memória e tem o seguinte protótipo: 
 
 
A função toma o número de bytes que 
queremos alocar (num), aloca na memória e 
retorna um ponteiro void * para o 
primeiro byte alocado. 
 
Se não houver memória suficiente para 
alocar a memória requisitada a função 
malloc() retorna um ponteiro nulo. 
 
5 
ALOCAÇÃO DINÂMICA 
PROJETO 1 
6 
ALOCAÇÃO DINÂMICA 
-CALLOC 
A função calloc() também serve para alocar 
memória, mas possui um protótipo um 
pouco diferente; 
 
A função aloca uma quantidade de memória 
igual a num*size; 
 
Ou seja, aloca memória suficiente 
para um vetor de num objetos de 
tamanho size; 
 
7 
ALOCAÇÃO DINÂMICA 
-CALLOC 
8 
ALOCAÇÃO DINÂMICA 
-REALLOC 
A função realloc serve para realocar 
memória e tem o seguinte protótipo: 
 
 
A função modifica o tamanho da memória 
previamente alocada, apontada por *ptr 
para aquele especificado por num; 
 
O valor de num pode ser maior ou menor 
que o original; 9 
ALOCAÇÃO DINÂMICA 
-REALLOC 
 Se ptr for nulo, aloca size bytes e devolve um 
ponteiro; 
 
 Se size é zero, a memória apontada por ptr é 
liberada; 
 
Um ponteiro para o bloco é devolvido porque o 
realloc() pode precisar mover o bloco para 
aumentar o tamanho; 
 
 Se não houver memória suficiente para alocação 
um ponteiro nulo é devolvido; 
10 
PROJETO 2 
-REALLOC 
11 
QUAL É O 
PROBLEMA DESSE 
CÓDIGO? 
ALOCAÇÃO DINÂMICA 
-FREE 
A função free() serve para liberarmos a 
memória alocada quando ela não for mais 
necessária. Segue o protótipo da função; 
 
 
Basta então passar para o free() o ponteiro que 
aponta para o início da memória alocada. 
 
Como o programa sabe quantos bytes vão ser 
liberados?  “Tabela de alocação” 
 
 
12 
13 
PASSAGEM DE MATRIZ COMO PARÂMETRO 
 
14 
ALOCAÇÃO DINÂMICA DE VETORES 
EXERCÍCIO 1 
15 
Crie as funções: 
 float* liberarVetor(float *v); 
 void redimensionarVetor(float *v, int tam); 
 Juntamente com a função alocarVetor() abaixo, 
crie um programa que teste as funções do 
programa. 
ALOCAÇÃO DE MATRIZES 
A alocação dinâmica de memória para 
matrizes é realizada da mesma forma que 
para vetores; 
 
Com a diferença que teremos um 
ponteiro apontando para outro ponteiro 
que aponta para o valor final; 
 
Ponteiro de Ponteiro é um conceito 
denominado como indireção múltipla 16 
ALOCAÇÃO DE MATRIZES 
PROJETO 3 
17 
ALOCAÇÃO DE MATRIZES 
PROJETO 4 
18 
EXERCÍCIO 2 
 Faça um programa em que o usuário informa o nº 
de elementos e um vetor de inteiros é alocado 
dinamicamente e preenchida aleatoriamente. 
Após imprimir os elementos da matriz em tela, o 
usuário poderá escolher uma posição para ser 
eliminada, a eliminação será realizada através de 
uma realocação de memória em que a coordenada 
escolhida será desconsiderada, sendo o vetor 
resultante o mesmo inicialmente utilizado. Ao 
final, a memória utilizada deverá ser liberada; 
 
19 
PONTO EXTRA 
 Faça um programa em que o usuário informa o nº de 
linhas e colunas e uma matriz de inteiros é alocada 
dinamicamente e preenchida aleatoriamente. Após 
imprimir os elementos da matriz em tela, o usuário 
poderá escolher uma coluna ou uma linha para ser 
eliminada, para isso crie duas funções eliminaLinha 
e elimina coluna, em ambas a eliminação será 
realizada através de uma realocação de memória em 
que a coordenada escolhida será desconsiderada, 
sendo a matriz resultante a mesma matriz 
inicialmente utilizada. Ao final, a memória utilizada 
deverá ser liberada; 
 
20 
PONTO EXTRA 
21

Outros materiais