estruturas de dados - bolinhabolinha · 3 alocação dinâmica técnica de gestão de memória...

6
1 Estruturas de Dados Alocação de Memória - Estática - Dinâmica Prof. Rodrigo Rocha [email protected] http://www.bolinhabolinha.com Onde Estamos ? Ementa Introdução à estrutura de dados. Alocação estática de memória. Alocação dinâmica de memória. • Pilhas. • Filas. • Listas. Algoritmos recursivos. • Árvores. • Grafos.

Upload: phamdan

Post on 13-Nov-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

1

Estruturas de Dados

Alocação de Memória- Estática- Dinâmica

Prof. Rodrigo [email protected] http://www.bolinhabolinha.com

Onde Estamos ? Ementa

• Introdução à estrutura de dados.• Alocação estática de memória. • Alocação dinâmica de memória. • Pilhas. • Filas. • Listas. • Algoritmos recursivos. • Árvores. • Grafos.

2

Alocação de Memória Memória

• Volátil• Não Volátil• Onde os dados são armazenados

Alocação de memória• COMO a memória será reservada

Tipos de Alocação• Estática• Dinâmica

Alocação Estática Ocorre na declaração de variáveis locais e

globais Vantagem

• Dados “contínuos na memória”• Facilita localização e manipulação

Desvantagem• Devemos conhecer o tamanho de memória que

iremos utilizar• Exemplo:Criar um vetor com a quantidade exata de elementos a

serem utilizados

3

Alocação Dinâmica Técnica de gestão de memória Evita problemas de alocação de memória

durante a execução do programa Aloca memória em tempo de execução Usada quando não sei ao certo quanto de

memória será necessário utilizada em

• Listas encadeadas, pilhas, filas, arvores binárias e grafos

comandos malloc

• Alocar uma região de memória de tamanho size de bytesvoid *malloc(size_t size)

free()• Liberar uma região de memória alocada com

mallocvoid free(void *ptr)

4

Exemplo

Temos um problema ? Vou criar um programa que receba as notas

dos alunos.

Qual o tamanho do vetor que devo declarar?

O que acontece (em relação a espaço) com as notas que não foram digitadas?

Será que terei memória o suficiente?

5

Solução Utilização de alocação dinâmica

Exercício Mostre o que os programas abaixo fazem. Dica: Mostre graficamente

onde os ponteiros apontam e seus valores para cada passo.

A-) void main(){

int *pta, *ptb;

pta = (int *)malloc(sizeof(int));ptb = pta; * pta = 5; printf("%d\n", * ptb); *ptb = 7; printf("%d\n", * ptb);

}

6

Exercício B-)

void main(){int *pta, * ptb; pta = (int *)malloc(sizeof(int)); ptb = (int *)malloc(sizeof(int)); * pta = 5;* ptb = 7; * pta = * ptb; printf("%d\n", * pta); }

Bibliografia Livro texto

• TENENBAUM, Aaron M; SOUZA, Tereza Cristina Félix de. Estruturas de Dados usando C. 1ª ed. São Paulo: MakronBooks,1995.

• PEREIRA, Silvio do Lago. Estrutura de Dados Fundamentais : conceitos e aplicações. 9ª ed. São Paulo: Érica, 2006.

• VELOSO, Paulo A. S.. Estrutura de Dados. 1ª ed. São Paulo: Campus, 1983.

Complementar• VILLA, Marcos Vianna. Estrutura de Dados : conceitos e técnicas de

implementação. 1ª ed. Rio de Janeiro: Campus, 1993. • WIRTH, Niklaus. Algoritmos e estruturas de dados. 1ª ed. Rio de

Janeiro: LTC, 1999• CORMEN, Thomas H.. ALGORITMOS : TEORIA E PRÁTICA. 2ª ed. Rio

de Janeiro: CAMPUS, 2002• SCHILDT, Herbert. C Completo e Total. 3ª ed. São Paulo: Pearson

Education, 2005