Alocação Dinâmica de Memória Professor Mário Dantas

Slides:



Advertisements
Apresentações semelhantes
Laboratório de programação III Linguagem C
Advertisements

Marco Antonio Montebello Júnior
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
Algoritmos de manipulação de estruturas elementares de dados
Alocação Dinâmida de Memória
Algoritmos e Estrutura de Dados I
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Alocação Dinâmica de Memória
LPG - I: Alocação Dinâmica de Memória - Ponteiros
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Listas com Ponteiros Listas encadeadas Listas circulares.
Universidade de Brasília
Curso de C/C++ Avançado
Slides Prof. Jean SIMÃO Revisão: Prof. João FABRO
Slides: Prof. João Fabro UTFPR - Curitiba
Fundamentos de Programação 1
Escola Secundária c/ 3º CEB da Batalha
Listas Encadeadas.
Revisão da Linguagem C.
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
Professor Reverton de Paula Faculdade Anhanguera de Indaiatuba
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 13 Orientação a Objetos – C++ Parte 1
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Gestão dinâmica de memória
PROGRAMAÇÃO ESTRUTURADA II
PROGRAMAÇÃO ESTRUTURADA II
Linguagem de Programação II Parte V
Linguagem de Programação II Parte IX
Definição de Tipos Estruturas e Ponteiros
Estruturas de Dados com Jogos
INTELIGÊNCIA ARTIFICIAL
Alocação Dinâmica de Memória
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Alocação Dinâmica de Memória
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Professor Mário Dantas
Prof. Ricardo Santos PONTEIROS
Linguagem C : Ponteiros
Estruturas de Dados Aula 5: Matrizes
Algoritmos e Estruturas de Dados I – Ponteiros
Sistemas Operacionais
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
Capítulo VIII Ambientes de Execução
Aula P.02 – BCC202 Revisão sobre Ponteiros Túlio Toffolo
1 Alocação Dinâmica Quando se declara arrays o tamanho deve ser fixo e definido primeiramente –Alocação estática Pode-se alocar dinamicamente o espaço.
Modelos de Linguagem de Programação I Aula 06
Algoritmos e Estruturas de Dados
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
INE - UFSC - Disciplina Estruturas de Dados - Prof. Dr. Aldo von Wangenheim Página 1 Estruturas de Dados - T.332 Capítulo 3 Parte 2: Alocação Dinâmica.
Programação de Computadores I – Ponteiros Profa. Mercedes Gonzales Márquez.
Leandro Almeida  As declarações abaixo alocam memória para diversas variáveis.  A alocação é estática, pois acontece antes que o programa.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula /08/2011 Professor Leomir J. Borba-
Ponteiros em C Prof. Kariston Pereira
Estrutura de Dados Aula 3 - Listas
Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
COMPILADORES 07 Prof. Marcos.
Programação em C Aula 9.
INE5408 Estruturas de Dados Listas Encadeadas Simples.
Tipo Abstrato de Dados (TAD) Estrutura de Dados Professor: Rodrigo Alves Sarmento Professor: André Cypriano.
ponteiros Estrutura de Dados Prof. André Cypriano M. Costa
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Jean Carlo Mendes
Transcrição da apresentação:

Alocação Dinâmica de Memória Professor Mário Dantas Estrutura de Dados Alocação Dinâmica de Memória Professor Mário Dantas Contribuição: Professor Marcelo Douglas

Alocação Dinâmica de Memória Ponteiros fornecem o suporte necessário para o poderoso sistema de alocação dinâmica. Alocação dinâmica é o meio pelo qual um programa pode obter memória enquanto está em execução. Nenhuma variável pode ser acrescentada em um programa em tempo de execução. Porém haverá momentos em que um programa precisará usar quantidades de armazenamento variáveis.

Alocação Dinâmica de Memória Por exemplo, um processador de texto ou um banco de dados aproveita toda a RAM de um sistema. Porém, como a quantidade de RAM varia entre computadores esses programas não podem usar variáveis normais. Em vez disso, esses e outros programas alocam memória, conforme necessário, usando as funções de alocação de memória.

Alocação Dinâmica de Memória A memória alocada pelas funções de alocação dinâmica é obtida do heap – a região de memória livre do seu computador. Embora o tamanho do heap seja desconhecido, ele geralmente contém uma quantidade razoavelmente grande de memória livre.

Alocação Dinâmica de Memória No padrão C ANSI existem 4 funções para alocações dinâmica pertencentes a biblioteca stdlib.h. São elas malloc(), calloc(), realloc() e free(). Sendo que as mais utilizadas são as funções malloc() e free(). malloc() aloca memória free() libera memória

Alocação Dinâmica de Memória A alocação dinâmica é muito utilizada em problemas de estrutura de dados como por exemplo, listas encadeadas, pilhas, filas, arvores binárias e grafos.

void *malloc(size_t numero_de_bytes); A sintaxe da função malloc() é dada por: numero_de_bytes é o número de bytes da memória que você quer alocar. O tipo size_t é definido em stdlib.h como sendo um inteiro sem sinal. O interessante é que esta função retorna um ponteiro do tipo void podendo assim ser atribuído a qualquer tipo de ponteiro. void *malloc(size_t numero_de_bytes);

malloc() O fragmento de código mostrado abaixo aloca 1000 bytes de memória: Em alguns compiladores o código acima retornará um erro de conversão de tipo:

malloc() Para garantir portabilidade é interessante então efetuar o cast para o tipo de ponteiro que você deseja: Após a atribuição, p aponta para o primeiro dos 1000 bytes de memória livre.

malloc() O próximo exemplo aloca espaço para 50 inteiros. Observe o uso de sizeof para assegurar a portabilidade:

malloc() Como o heap não é infinito, sempre que alocar memória, você deve testar o valor devolvido por malloc(), antes de usar o ponteiro, para estar certo de que não é nulo. Usar um ponteiro nulo quase certamente travará o computador.

free() A função free() é o oposto de malloc(), visto que ela devolve memória previamente alocada ao sistema. Uma vez que a memória tenha sido liberada, ela pode ser realocada por uma nova chamada a malloc(). Aqui, pont é um ponteiro para a memória alocada anteriormente por malloc(). É muito importante que você nunca use free() com um argumento inválido, isso destruiria a lista de memória livre. void free(void *pont)

Exemplos de Alocação Dinâmica de Memória Estrutura de Dados Exemplos de Alocação Dinâmica de Memória