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.

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-
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
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
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade de Brasília
Ponteiros em Linguagem C
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.
Vetor de Ponteiros Exemplo de Alocação. Escrever Vetor de Vetores de floats int main() { int i, k, n; float **vetor; // vetor de vetores int *tamanho;
Alocação Dinâmica de Memória
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
Listas Simplesmente Encadeadas
exercícios listas encadeadas
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 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
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
Implementação de FILAS com Alocação Dinâmica
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
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
Paradigmas e Ferramentas de Desenvolvimento de Software – Revisão da linguagem C++ Lúbia Vinhas DPI - INPE.
Aula 3 Vetores e Listas. Arrays (vetores) Array – sequência de elementos do mesmo tipo. Tamanho do Array – seu número de elementos (número fixo) Consequência:
Estruturas de Dados Aula 5: Matrizes
Introdução à Programação Orientada a Objetos com Java Paulo Borba Centro de Informática Universidade Federal de Pernambuco Programação Imperativa (e Ponteiros.
Ambiente de Execução - Rotinas
Algoritmos e Estruturas de Dados I – Ponteiros
Aula P.02 – BCC202 Revisão sobre Ponteiros Túlio Toffolo
Estruturas de Dados Aula 7: Tipos Estruturados 23/04/2014.
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.
Prof. Alessandro Gonçalves
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
MC102 - Algoritmos e Programação de Computadores 14ª Aula - Ponteiros Amanda Meincke Melo Instituto de Computação/Unicamp 1º Sem/2005.
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
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
Linguagem de Programação
COMPILADORES 07 Prof. Marcos.
Programação em C Aula 9.
ponteiros Estrutura de Dados Prof. André Cypriano M. Costa
Sistemas Operacionais Gerência de Memória Funções básicas (número, tamanho e segurança) Alocação contígua simples Técnica de overlay Alocação particionada.
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:

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 de memória necessário a um determinado número de dados –Alocação mais “inteligente”

2 Como funciona? Através do uso de ponteiros –Se o espaço puder ser alocado o ponteiro retorna o endereço do primeiro elemento A seqüência de dados pode aumentar dinamicamente –Em linguagem “C” a alocação pode ser feita pelas funções: malloc e calloc –A liberação de espaço: free –Se o espaço não puder ser alocado o ponteiro retorna NULL (endereço nulo) –Alocação feita no HEAP (restante da memória não alocada)

3 Utilização MALOC Alocando espaço: float *pont = (float *) malloc(N*sizeof(float)); –Onde pont é o nome do ponteiro Utilizando no programa –Exibindo for(i=0; i<N;i++) printf(“elem.%d=%f\n",i, *(pont+i)); //pont[i] –Entrada de dados for(i=0; i<N;i++) scanf("%d",(pont+i)); //&pont[i]

4 Utilização CALOC Alocando espaço: float *pont = (float *) calloc(N, sizeof(float)); Armazena zero em todos os elementos Utilizando no programa –Exibindo for(i=0; i<N;i++) printf(“elem.%d=%f\n",i, *(pont+i)); //pont[i] –Entrada de dados for(i=0; i<N;i++) scanf("%d",(pont+i)); //&pont[i]

5 Utilização FREE Liberando espaço: free(pont); Pode ser usado em qualquer lugar no programa Libera o espaço previamente alocado

6 #include void main() { int *ptr; int i, N; printf(“Quantos elementos?: "); scanf("%d",&N); ptr=(int *) malloc(N*sizeof(int)); for(i=0; i<N; i++) { printf("Digite elem.[%d]: ",i); scanf("%d", (ptr + i)); //scanf("%d", &ptr[i]); } clrscr(); for(i=N-1; i>=0; i--) printf("Elem.[%d]:%d\n",i,ptr[i]); free(ptr); }

7 #include void main() { int *ptr; int i, N; printf(“Quantos elementos?: "); scanf("%d",&N); ptr=(int *) malloc(N*sizeof(int)); if (ptr == NULL) { printf("Aloc.nao efetuada!!\n"); exit(0); } for(i=0; i<N; i++) { printf("Digite o elem.[%d]", i); scanf("%d", (ptr + i)); } clrscr(); for(i=N-1; i>=0; i--) printf("Elem.[%d]:%d\n",i,ptr[i]); free(ptr); }

8 #include void main() { int *ptr; int i, N; printf(“Quantos elementos?: "); scanf("%d",&N); ptr=(int *) malloc(N*sizeof(int)); if (ptr == NULL) { printf("Aloc.nao efetuada!!\n"); exit(0); } for(i=0; i<N; i++) { printf("Digite o elem.[%d]", i); scanf("%d", (ptr + i)); } clrscr(); for(i=N-1; i>=0; i--) printf("Elem.[%d]:%d\n",i,ptr[i]); free(ptr); }

9 #include void main() { int *ptr, *p; int i, N; printf(“Quantos elementos?: "); scanf("%d",&N); ptr = (int *) calloc(N,sizeof(int)); if (!ptr) {printf("Aloc.nao efetuada!!\n"); exit(0);} p = (int *) malloc(N*sizeof(int)); if (!p) {printf("Aloc.nao efetuada!!\n"); exit(0);} printf("Valores iniciais\n"); for(i=0; i<N; i++) printf("p[%d]=%d,ptr[%d] = %d\n", i, p[i], i, ptr[i]); free(ptr); free(p); }