Baixe o app para aproveitar ainda mais
Prévia do material em texto
Instituto Federal do Sul de Minas Gerais Algoritmos Aula 09 – Alocação Dinâmica douglas.braz@ifsuldeminas.edu.br Alocação Dinâmica de Memória • Forma de gerar espaço de memória dinamicamente, durante a execução de um programa ▫ Isto é necessário quando nos programas temos quantidades de armazenamento variáveis. Pilha Lacuna Dados dinâmicos Texto FFFF 0000 Espaço de endereçamento Dados estáticos Reservado Alocação Dinâmica de Memória • Forma de gerar espaço de memória dinamicamente, durante a execução de um programa ▫ Isto é necessário quando nos programas temos quantidades de armazenamento variáveis. Pilha Lacuna Dados dinâmicos Texto FFFF 0000 Espaço de endereçamento Dados estáticos Reservado Temos 2 funções em C para alocação dinâmica Funções para Alocação Dinâmica • malloc: ▫ Devolve o endereço do primeiro byte da memória alocado para uma variável tipo ponteiro Funções para Alocação Dinâmica • malloc: ▫ Devolve o endereço do primeiro byte da memória alocado para uma variável tipo ponteiro ▫ Foram alocados com esta instrução 1000 bytes de memória, sendo que p aponta para o primeiro destes 1000 bytes. Funções para Alocação Dinâmica • malloc: ▫ Sempre que se alocar memória, deve-se testar o valor devolvido por malloc(), antes de usar o ponteiro, para garantir que não é nulo. Funções para Alocação Dinâmica • malloc: ▫ Podemos utilizar a função sizeof()quando não sabemos o tamanho do dado. Funções para Alocação Dinâmica • malloc: ▫ Podemos utilizar a função sizeof()quando não sabemos o tamanho do dado. Cast: utilizado para “forçar” o retorno da função Funções para Alocação Dinâmica • malloc: ▫ Podemos utilizar a função sizeof()quando não sabemos o tamanho do dado. n vezes o tamanho de um int Funções para Alocação Dinâmica • free: ▫ Devolve para o sistema a porção de memória que foi alocada dinamicamente. Exercícios • Faça um programa em C que: ▫ Leia um valor n, correspondente à quantidade de elementos de uma variável composta unidimensional A; ▫ Aloque dinamicamente a memória de A, tal que A contenha n valores inteiros; ▫ Leia n valores de A; ▫ Coloque A em ordem crescente; ▫ Escreva A; ▫ Libere o espaço de memória alocado para A;
Compartilhar