Você está na página 1de 1

05/06/2017

Introduo a Programao Alocao Dinmica


Na aula anterior vimos o uso de
Prof. Flvio Ferry de Oliveira Moreira
ponteiros como variveis marcadoras de
posio;
Programao C
Nesta aula veremos como usar ponteiros
Alocao Dinmica
para criar e destruir variveis durante a
execuo do programa.

05/06/2017 2017 DC - UFPI 1 05/06/2017 2017 DC - UFPI 2

#include <stdlib.h> } #include<stdio.h>


#include <stdio.h> #include <stdlib.h>
int main() printf("Endereo de #include <time.h>
{ ptr_a: %p\n", ptr_a); int main()
int *ptr_a; *ptr_a = 90; {
printf("Conteudo de int i;
ptr_a = ptr_a: %d\n", *ptr_a); // int *v;
malloc(sizeof(int)); 90 v = (int*)malloc(sizeof(int)*10); // 'v' ponteiro para vetor 10 int.
// cria a rea free(ptr_a); // Libera for(i = 0; i < 10; i++){
necessria printf("Conteudo de v[i]=rand()%10; //preenchimento aleatorio do vetor (0..9)
if (ptr_a == NULL) ptr_a: %d\n", *ptr_a); // printf("v[%d]: %d\n", i, v[i]);
!= 90 }
{
return 0; printf("Endereco de 'v': %p", v); // imprime o endereo de v
printf("Memoria free(v);
insuficiente!\n"); }
return 0;
exit(1); }
05/06/2017 2017 DC - UFPI 3 05/06/2017 2017 DC - UFPI 4

#include <stdio.h>
#include <stdlib.h>
int main() FIM
{ int *vet, *ptr, i;
vet = (int*)malloc(sizeof(int)*10);
vet[4] = 44; // 'vet' funciona como um vetor, depois de malloc
ptr = vet; // 'ptr' aponta para o incio do vetor
*ptr = 11; // vet[0] = 11
*(ptr+1) = 12; // vet[1] = 12
printf("Endereco: %p\n\n\n", ptr);
for(i=0;i<=9;i++)
printf("%d\n", *(ptr+i));
ptr=vet; //sempre apontar para o inicio antes de liberar
free(ptr);
return 0;
}
05/06/2017 2017 DC - UFPI 5 05/06/2017 2017 DC - UFPI 6

Você também pode gostar