Jean Carlo Mendes

Slides:



Advertisements
Apresentações semelhantes
Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de.
Advertisements

Marco Antonio Montebello Júnior
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
Programação II Estruturas de Dados
Programação II Estruturas de Dados
Alocação Dinâmida de Memória
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
Políticas Curso de aprofundamento em linguagem C.
LPG - I: Alocação Dinâmica de Memória - Ponteiros
Universidade de Brasília
Slides Prof. Jean SIMÃO Revisão: Prof. João FABRO
Fundamentos de Programação 1
Escola Secundária c/ 3º CEB da Batalha
Listas Encadeadas.
Professor Reverton de Paula Faculdade Anhanguera de Indaiatuba
Alocação Dinâmica de Memória Professor Mário Dantas
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Linguagem de Programação II Parte IX
Definição de Tipos Estruturas e Ponteiros
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.
Alocação Dinâmica de Memória
Aula Prática 12 Operações com Arquivos Monitoria
Prof. Ricardo Santos PONTEIROS
Estruturas de Dados Aula 5: Matrizes
Algoritmos e Estruturas de Dados I – Ponteiros
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Estruturas de Dados Aula 11: TAD Pilha
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.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
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.
Leandro Almeida  As declarações abaixo alocam memória para diversas variáveis.  A alocação é estática, pois acontece antes que o programa.
Ponteiros em C Prof. Kariston Pereira
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Arrays e Matrizes na Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
COMPILADORES 07 Prof. Marcos.
Programação em C Aula 9.
ponteiros Estrutura de Dados Prof. André Cypriano M. Costa
UNIVERSIDADE FEDERAL DE MINAS GERAIS Pilhas e Filas Cristiano Arbex Valle Vinicius Fernandes dos Santos
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.
INE5408 Estruturas de Dados Passagem por Referência.
1 Bibliografia 1. WIRTH, Niklaus. Algoritmos e estruturas de dados. 2. TENEMBAUM, Aaron. Estruturas de Dados usando C. 3. MORAES, Celso. Estruturas de.
IFRN Técnico em Informática para Internet Desenvolvimento de Algoritmos Prof. Gilbert Azevedo.
INE5408 Estruturas de Dados Introdução a Árvores - Conceitos - Árvores Binárias - Métodos e algoritmos de percurso - Métodos e algoritmos de balanceamento.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
SISTEMAS OPERACIONAIS MEMÓRIA VIRTUAL. INTRODUÇÃO Memória Virtual é um técnica sofisticada e poderosa de gerenciamento de memória, onde a MP e a MS são.
Alessandro D. R. Fazenda
Clique para editar o título Linguagem C Para programadores Python PMR
Estruturas Lineares de Dados Revisão Wolley W. Silva.
Jean Carlo Mendes
Laboratório de Computação Aula 05 – Array Prof. Fábio Dias
Introdução ao Eclipse 3.2 Prof. Gustavo Wagner (modificações) Slides originais: Prof. Tiago Massoni Java Básico  Centro de Informática, UFPE.
Jean Carlo Mendes ** Slides baseados no material do prof. Dr Guilherme Tavares de Assis (UFOP)
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Listas.
1 1 Slide Programação Dinâmica Prof. Dr. Alexandre Pereira Salgado Junior.
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ PAE: Pedro Shiguihara Professor: Dilvan Moreira.
VARIÁVEIS EM JAVA Dilvan Moreira (baseado no livro Big Java)
PROGRAMAÇÃO BÁSICA NA HP-12C. A MÉMÓRIA BÁSICA DA HP-12C A MÉMORIA BÁSICA DA HP-12C GOLD/PLATINUM/PRESTIGE POSSUI 8 LINHAS A HP-12C GOLD/PLATINUM/PRESTIGE.
INF1007: Programação 2 2 – Alocação Dinâmica
Fundamentos de Programação 1
UNIDADE 7 Tipos estruturados
INE 5201 – INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO
Algoritmos e Programação MC102
Transcrição da apresentação:

Jean Carlo Mendes

 Uso da memória:  Variáveis globais (estáticas)  Espaço reservado para uma variável global existe enquanto o programa estiver em execução  Variáveis locais  Espaço existe apenas enquanto a função que declarou a variável está sendo executada  Espaço liberado para outros usos quando a execução da função termina  Variáveis globais ou locais podem ser simples ou vetores  Para o caso de vetores, informa-se o tamanho máximo de elementos que ele pode armazenar (o compilador usa esta informação para reservar o espaço de memória)

 Uso da memória:  Alocação dinâmica  Espaço de memória é requisitado em tempo de execução  Espaço permanece reservado até que seja explicitamente liberado  Depois de liberado, este espaço estará disponível para outros usos (e não pode ser mais acessado)  Espaço alocado e não liberado explicitamente será liberado automaticamente ao final da execução do programa

 Uso da memória:  Memória estática  Código do programa  Variáveis globais  Variáveis Estáticas  Memória dinâmica  Variáveis alocadas dinamicamente  Memória livre  Variáveis locais Memória estática Código do programa Variáveis globais e variáveis estáticas Memória dinâmica Variáveis alocadas dinamicamente Memória livre Variáveis locais (Pilha de execução)

 Uso da memória:  Alocação dinâmica  Usa a memória livre  Se o espaço livre for menor que o requisitado na alocação, gera erro (precisa ser tratado)  Pilha de execução  Utilizada para alocar a memória quando ocorre chamada de função  Sistema reserva o espaço para as variáveis locais da função  Quando a função terminar o espaço é liberado (desempilhado)  Se a pilha tentar crescer mais que o espaço disponível o programa termina com erro Memória estática Código do programa Variáveis globais e variáveis estáticas Memória dinâmica Variáveis alocadas dinamicamente Memória livre Variáveis locais (Pilha de execução)

 A biblioteca “stdlib.h” fornece uma séria de funções pré-definidas para se trabalhar com alocação dinâmica

void * malloc (int numeroBytes); void free (void *p); Código do Programa Variáveis Globais e Estáticas Memória Alocada Dinamicamente Pilha Memória Livre

Função “malloc”  Recebe como parâmetro o número de bytes que se deseja alocar  Retorna um ponteiro “genérico” para o endereço inicial da área de memória alocada (se houver espaço livre)  Ponteiro genérico é representado por void*  Ponteiro é convertido automaticamente para o tipo apropriado  Ponteiro pode ser convertido explicitamente  Retorna um endereço nulo se não houver espaço livre  Representado pelo símbolo NULL

Função “sizeof”  Retorna o número de bytes ocupado por um tipo Função “free”  Recebe como parâmetro o ponteiro da memória a ser liberada  A função free deve receber um endereço de memória que tenha sido usado para alocação dinâmica (com o malloc)

Exemplo  Alocação dinâmica de memória para um vetor capaz de armazenar 10 valores do tipo inteiro  malloc retorna o endereço da memória alocada para armazenar valores inteiros  Ponteiro de inteiro recebe o endereço inicial para o espaço alocado int *v; v = (int *) malloc (10 * sizeof(int));

int *v; v = (int *) malloc (10 * sizeof(int));

 v armazena o endereço inicial de uma área contígua de memória (suficiente para armazenar 10 valores inteiros)  v pode ser tratado como um vetor declarado estaticamente  v aponta para o início da área alocada  v[0] acessa o espaço do primeiro elemento  v[1] acessa o espaço do segundo elemento  v[9] acessa o espaço alocado para o último elemento

Tratamento de erro para o malloc  Imprime a mensagem de erro  Aborta a execução (exit)

Revistando o exemplo de ponteiros....

 Erro na atribuição *p=3  Utiliza a memória apontada por p para armazenar o valor 3 sem que a área de memória seja alocada  Armazena 3 em um espaço de memória não conhecido

 Reservado o espaço de 1 inteiro para p  Atribuição realizada com sucesso

Exercício !