Você está na página 1de 9

Estruturas de Dados

Prof. Perini
Sistemas de Informação
Ciência da Computação
Disciplina: Estrutura de Dados
- Alocação dinâmica -
Profº José Carlos Perini

Fontes:
Apostilas de Estruturas de Dados e de Linguagem C
Adaptado dos slides do Prof° Fábio L. R. Pelissoni
Alocação Dinâmica

• É o meio pelo qual um programa pode obter memória


enquanto está em execução;

• Variáveis globais e variáveis locais não podem ser


acrescentadas durante o tempo de execução. Porém existem
momentos em que um programa precisa usar quantidade de
armazenamento de variáveis;

• Exemplo: processador de texto ou um banco de dados.


Esses e outros programas alocam memória conforme
necessário;

3
Alocação Dinâmica

• O coração do sistema de alocação dinâmica de C consiste


nas funções malloc() e free();

• malloc() é utilizada para alocar espaço na memória e


retornar o endereço do primeiro byte (retorna um tipo
ponteiro);

• A função free() libera o espaço que foi reservado por


malloc();

4
Alocação Dinâmica

• Isto é, cada vez que é feita uma solicitação de memória por


malloc(), uma porção da memória livre restante é alocada.
Cada vez que é efetuada uma chamada a free() para
liberação de memória, a memória é devolvida ao sistema;

• Qualquer programa que usa essas funções deve incluir o


cabeçalho STDLIB.H;

• O subsistema de alocação dinâmica de C é usado em


conjunção com ponteiros para suportar uma variedade de
construções de programação importantes como listas ligadas
e árvores binárias;

5
Alocação Dinâmica

- Possui o endereço de retorno das chamadas


de função;
Pilha - argumentos para funções;
- variáveis locais;

Região de memória livre, que um programa


HEAP pode utilizar, via funções de alocação
dinâmica de C;

Variáveis Globais

Código do Programa

Mapa conceitual de memória de um programa em C

6
Exemplo

Fazer um programa que recebe


as notas de 5 alunos através de
ponteiros e mostra a média
dessas notas.

7
Exemplo

8
Resultado do Exemplo

Você também pode gostar